PostgreSQL帮助、用户、权限操作

news/2024/7/9 20:07:36 标签: postgresql, 数据库

文章目录

  • 一、帮助操作
  • 二、用户操作
    • 1、创建角色
    • 2、修改角色
    • 3、删除角色
  • 三、权限操作
    • 1、逻辑结构
    • 2、权限分层
    • 3、实战

一、帮助操作

查看psql的命令:psql --help
在这里插入图片描述
连接选项说明:
在这里插入图片描述

For more information, type “?” (for internal commands) or “\help” (for SQL
commands) from within psql, or consult the psql section in the PostgreSQL
documentation.

通过以上说明,我们还可以在进入psql后,查看一些命令:

\?:查看服务级别的命令
\help:查看数据库级别的命令

二、用户操作

登录:psql -h 主机名 -p 端口 -U 用户名 -W
在这里插入图片描述
查看全部用户信息:\du
在这里插入图片描述

1、创建角色

常用命令如下:

CREATE USER name [ [ WITH ] option [ ... ] ]
CREATE ROLE name [ [ WITH ] option [ ... ] ]

CREATE USER和CREATE ROLE等效,除了CREATE USER默认有连接权限,而CREATE ROLE没有,只有具有LOGIN属性的角色才能被用于一个数据库连接的初始角色名称。要创建一个带有登录权限的角色,也可以使用CREATE ROLE 名称 LOGIN;

option可以是:

SUPERUSER | NOSUPERUSER
CREATEDB | NOCREATEDB
CREATEROLE | NOCREATEROLE
INHERIT | NOINHERIT
LOGIN | NOLOGIN
REPLICATION | NOREPLICATION
BYPASSRLS | NOBYPASSRLS
CONNECTION LIMIT connlimit
[ ENCRYPTED ] PASSWORD ‘password’ | PASSWORD NULL
VALID UNTIL ‘timestamp’
IN ROLE role_name [, …]
IN GROUP role_name [, …]
ROLE role_name [, …]
ADMIN role_name [, …]
USER role_name [, …]
SYSID uid

具体可以查看官方中文文档

构建一个超级管理员用户root,密码为root:create user root with SUPERUSER PASSWORD 'root'
退出psql命令行:\q
重新登录:psql -h 192.169.56.100 -p 5432 -U root -W
在这里插入图片描述

出现错误,数据库不存在:database “root” does not exist,新增一个数据库create database root;
在这里插入图片描述

测试下,切换数据库\c root
在这里插入图片描述

重新登录,正常了
在这里插入图片描述

2、修改角色

语法:ALTER ROLE role_specification [ WITH ] option [ ... ]
具体语法可以查看官方中文文档

修改用户名,从root改为root1:ALTER ROLE root RENAME TO root1;
在这里插入图片描述

3、删除角色

语法:DROP ROLE [ IF EXISTS ] name [, ...]

IF EXISTS
如果该角色不存在则不要抛出一个错误,而是发出一个提示。
name
要移除的角色的名称。

删除root1角色:DROP ROLE root1;
在这里插入图片描述

三、权限操作

1、逻辑结构

PostgreSQL的逻辑结构如下图:
在这里插入图片描述

可以看到PostgreSQL一个数据库(Database)中有多个模式(Schema),在每个schema下都有自己的库表信息,权限粒度会比MySQL更细一些。

参数说明:

  • 服务器(Server):在 PostgreSQL 中,服务器是指一个独立的数据库管理系统实例。每个服务器都有自己的配置和运行环境,可以独立地处理数据库请求。
  • 集群(Cluster):集群是指由一个或多个服务器组成的逻辑集合。在 PostgreSQL 中,一个集群可以包含多个数据库。每个数据库都属于一个特定的集群。
  • 表空间(Tablespace):表空间是用于存储数据库对象的物理位置。它可以是一个文件系统目录或一个独立的磁盘分区。通过将表空间分配给数据库,可以将数据库对象存储在不同的物理位置上,以实现数据的分离和管理。
  • 数据库(Database):数据库是数据的集合,用于组织和存储相关数据。
  • 模式(Schema):模式是数据库中的逻辑容器,用于组织和分隔对象。

2、权限分层

在PostgreSQL中,权限的管理分为很多层:

  • Server、Cluster、Tablespace级权限:这个级别一般是基于pg_hba.conf去配置
  • Database级权限:通过grant命令去设置控制用户对整个数据库的访问和操作权限,例如创建表、修改表结构等。
  • Schema级权限:用得少
  • 对象级权限:通过grant命令去设置控制用户对特定数据库对象(如表、视图、函数)的访问和操作权限。

3、实战

#构建用户
create user forlan with password 'forlan';
#构建数据库
create database forlan;
#切换数据库
\c forlan;
#构建schema
create schema forlanSchema;
#将这个schema的拥有者改为forlan用户
alter schema forlanSchema owner to forlan;
#将forlan库下的forlan的schema中的表的增,改,查权限赋予给forlan用户
grant select,insert,update on all tables in schema forlanSchema to forlan;

验证是否配置成功,使用forlan用户连接forlan数据库,出现异常,如下:

forlan=# \c forlan -forlan 
FATAL:  Peer authentication failed for user "-forlan"
Previous connection kept

原因是因为我们的pg_hba.conf如下,当前系统用户只有postgres,没有forlan,无法使用peer连接
在这里插入图片描述
可以使用远程连接,使用host这种,并展示当前数据库中的所有模式(schemas)的列表:\dn,如下:
在这里插入图片描述
数据库默认有一个public的schema,归属postgres


http://www.niftyadmin.cn/n/5277400.html

相关文章

2023,java开发,已经炸了吗?

2023,java开发,已经炸了吗? 坐标成都!是的,已经炸了。 本人技术栈: java全家桶,node, react ,外加一丢丢py和shell和cpp。工作经历,6年5家公司,中间gap了一年,相当于…

【深度学习】序列生成模型(五):评价方法计算实例:计算BLEU-N得分【理论到程序】

文章目录 一、BLEU-N得分(Bilingual Evaluation Understudy)1. 定义2. 计算N1N2BLEU-N 得分 3. 程序 给定一个生成序列“The cat sat on the mat”和两个参考序列“The cat is on the mat”“The bird sat on the bush”分别计算BLEU-N和ROUGE-N得分(N1或…

自动气象监测站助力生活生产

随着科技的发展,我们的生活和生产方式正在发生着日新月异的变化。其中,WX-CQ12 自动气象监测站作为一项气象监测设备,正在发挥着越来越重要的作用。它不仅为我们提供了更加准确、实时的天气信息,还为农业、交通、旅游等领域提供了…

ICC2:Less than minimum edge length和Concave convex edge enclosure

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 首先,要介绍一下这两种drc Less than minimum edge length对应的tf rule如下: 而Concave convex edge enclosure对应图示和tf 规则如下,可

Android消息公告上下滚动切换轮播实现

自定义控件 通过继承TextSwitcher实现 直接上代码 public class NoticesSwitcher extends TextSwitcher implements ViewSwitcher.ViewFactory {private Context mContext;private List<Notice> mData;private final long DEFAULT_TIME_SWITCH_INTERVAL 1000;//1spri…

MyBatis-Flex 尝鲜

MyBatis-Flex 官网&#xff1a;官网地址 快速上手&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xmlns"http://maven.apache.org/POM/4.0.0"xsi:…

Python爬虫山东重庆各地区天气预报

天气数据获取工具 简单的Python脚本用于从中国天气网(http://www.weather.com.cn/textFC/chongqing.shtml)获取天气数据&#xff0c;并将数据保存到Excel文件中。 功能 输入中文省份名称&#xff0c;获取该省份下所有城市的天气数据。 数据保存到指定文件夹中&#xff0c…

助力产教合一:赛氪出席中国研究生数学建模竞赛二十周年庆典

助力产教合一&#xff0c;共建创新平台&#xff1a;赛氪出席中国研究生数学建模竞赛二十周年庆典 12月16日&#xff0c;第二十届中国研究生数学建模竞赛颁奖典礼暨二十周年庆祝大会顺利召开。2003年&#xff0c;由东南大学发起并主办“南京及周边地区高校研究生数学建模竞赛”…