PostgreSQL 用户和角色管理

PostgreSQL的用户管理

用户和角色的区别:用户有权限、角色没有权限

一、组角色管理 ----》使用组角色的概念管理数据库访问权限;

1、创建组角色

一个组角色可以看做是一组数据用户。组角色可以拥有数据库对象(比如表),以及可以把这些对象上的权限赋予其他角色,以控制拥有访问哪些对象的权限。

1.1使用pgAdmin创建组角色

PostgreSQL 用户和角色管理_第1张图片

PostgreSQL 用户和角色管理_第2张图片

PostgreSQL 用户和角色管理_第3张图片

PostgreSQL 用户和角色管理_第4张图片

PostgreSQL 用户和角色管理_第5张图片

1.2、使用sql语句进行创建组角色

PostgreSQL 用户和角色管理_第6张图片

PostgreSQL 用户和角色管理_第7张图片

1.3查看和修改组角色

①、pgAdmin查看组角色

②、使用sql语句进行查看

角色都是存储在pg_roles系统表中的 :

PostgreSQL 用户和角色管理_第8张图片

③、修改组角色名称

ALTER  ROLE  组角色名称  RENAME  TO  新的组角色名称;

PostgreSQL 用户和角色管理_第9张图片

PostgreSQL 用户和角色管理_第10张图片

1.4删除组角色

①、pgAdmin右键自行删除

PostgreSQL 用户和角色管理_第11张图片

②、sql语句删除

DROP  ROLE  组角色的名称;

PostgreSQL 用户和角色管理_第12张图片

PostgreSQL 用户和角色管理_第13张图片

2、角色的各种权限

①、LOGIN(登录)

    创建的组角色没有权限。只有具有LOGIN权限的组角色才可以用作数据库连接的初始角色名。一旦组角色拥有了登录权限,即可当作用户一样来使用。

create role  组角色名称  login;

PostgreSQL 用户和角色管理_第14张图片

PostgreSQL 用户和角色管理_第15张图片

②、superuser (超级用户)

superuser拥有对数据库操作的最高权限,可以完成对数据库的所有权限检查。为了保证PostgreSQL 的安全,建议谨慎使用。

create role  组角色名称  superuser;

PostgreSQL 用户和角色管理_第16张图片

PostgreSQL 用户和角色管理_第17张图片

③、CREATEDB (创建数据库)

角色想要创建数据库,必须明确的给出权限。除了超级用户之外。

create role  组角色名称  createdb;

PostgreSQL 用户和角色管理_第18张图片

PostgreSQL 用户和角色管理_第19张图片

④、createrole (创建角色)

    角色想要创建角色,必须明确给出该权限。一旦角色拥有该权限,即可更改和删除其他角色,还可以给其他角色赋予或撤销成员关系。

create  role  组角色名称  createrole;

PostgreSQL 用户和角色管理_第20张图片

PostgreSQL 用户和角色管理_第21张图片

⑤、口令

在客户认证方法要求与数据库连接时,需要口令权限。常见的口令权限有password、MD5、crypt。

create  role 组角色名称  口令认证方法  具体口令;

PostgreSQL 用户和角色管理_第22张图片

PostgreSQL 用户和角色管理_第23张图片

3、账户管理

3.1创建用户

用户拥有登录权限的组角色。

①、使用pgAdmin创建

②、使用sql语句进行创建

create user 名称;

PostgreSQL 用户和角色管理_第24张图片

PostgreSQL 用户和角色管理_第25张图片

3.2删除

3.3修改用户密码

sql语句修改

PostgreSQL 用户和角色管理_第26张图片

4、组角色和用户权限管理

4.1对组角色授权

①、sql语句

alter  role  角色名 权限1 权限2 ···

对pen授予创建数据库和创建角色的权限。

PostgreSQL 用户和角色管理_第27张图片

4.2对用户授权

alter user 用户名  权限1  权限2 ···
PostgreSQL 用户和角色管理_第28张图片

4.3收回权限

alter role/user  用户名  nocreatedb ```

5、数据库权限

5.1修改数据库的拥有者 

①、sql语句

alter database 数据库名称 owner to 拥有者名称;

5.2增加用户权限

默认情况下,只有数据库的所有者可以对其中的数据表进行操作。

①、使用sql语句

crant 权限 on 数据表 to  用户名称;
crant update on pool  to postgres;


你可能感兴趣的:(PostgreSQL,PostgreSQL)