PostgreSQL学习(五)—— 用户、权限管理

PostgreSQL用户、权限管理

1、PG中的用户和角色

    PostgreSQL倾向于使用角色来管理数据库权限,为了管理上的方便,一般会将一些列相关的数据库权限赋予给一个角色(Role),哪些用户需要使用这些权限(权限的集合),则将该角色赋予该用户;

    在PostgreSQL中,角色和用户是没有分别的,你也可以将一个用户(的所有权限)分发给另外一个用户,这样简化了用户和角色管理;

    在数据库初始化的过程中,预定义了一个超级请用户,与初始化数据库的OS User用户名保持一致,若使用用户“postgres”来初始化数据库,那么则会创建一个叫做postgres的超级权限用户;

2、创建角色及用户

语法:

Create Role rname [ [ With ] option [ ... ] ]
Create User rname [ [ With ] option [ ... ] ]

前面说过,在PG中,Role和User是基本没有区别的,但是使用Create User来创建用户的时候,比较Create Role来说,会自带一个"Login"的权限;

语法中的Option内容可以如下:

    SUPERUSER | NOSUPERUSER: 创建的用户是否是超级用户,只有超级用户才拥有创建超级用户的权限;

    CREATEDB | NOCREATEDB: 是否拥有创建数据库的权限;

    CREATEROLE | NOCREATEROLE: 是否拥有创建角色的权限;

    CREATEUSER | NOCREATEUSER: 如上;

    INHERIT | NOINHERIT: 继承创建用户的权限;

    CONNECTION LIMIT connlimit: 指定限制的并发连接数量;

    [ENCRYPTED|UNENCRYPTED] PASSWORD 'password': 用于控制是否对系统表中的密码进行加密;

    VALID UNTIL 'timestamp': 口令的有效时长;

    IN ROLE rname: 指定User成为哪些Role的成员(继承该Role的所有权限);

    ROLE rname: 将成为这个新建的角色的成员;

    ADMIN rname: 将有这个新建角色的WITH ADMIN OPTION权限;

    SYSID uid: 向下兼容,无实际用途;

3、权限管理

    一个用户的权限分为两类,一类是在创建用户时候指定的,例如:

    CREATEDB | NOCREATEDB 、 SUPERUSER | NOSUPERUSER 、 LOGIN等等,这种权限的增需要用以下语法:

  ALTER ROLE rname [ [ WITH ] Option [ ... ] ]

    还有一种权限,需要使用GRANT和REVOKE管理,例如:

    1)创建Schema;

    2)允许在指定数据库中创建临时表;

    3)允许创建数据库对象,如表、视图、函数等;

    4)对特定对象做SELECT、DELETE、UPDATE、INSERT等等;

    5)对序列的操作;

    6)在声明表上创建触发器;

    7)指定表、索引所在的表空间;

  GRANT rname [, ...] TO rname [, ...] [WITH ADMIN OPTION];

    




你可能感兴趣的:(PostgreSQL)