一、GP数据库中角色(Role)的创建和管理
1、客户端通过角色(role)来访问数据库。什么是角色?角色相当于linux系统中用户和组的概念,角色可以是GP数据库的一个用户,也可以是一个组,也可以是包含很多用户的一个组。
2、角色可以创建自己的数据库对象,并可以赋予其他角色访问这些对象的权限。
3、角色可以是其他角色的成员,子角色继承父角色的对象权限。
4、GP中默认的管理员角色gpadmin,他拥有管理GP数据库的最高权限,可以绕过所有安全检查,访问数据库。
二、创建角色(user、group)
a、创建角色
mydb=# create role user01 with login; --创建user01的角色,并赋权运行其登陆数据库。
NOTICE: resource queue required -- using default
resource queue "pg_default"
CREATE ROLE
修改角色的属性
b、角色的属性:
SUPERUSER | NOSUPERUSER --是否是超级管理员,默认是NOSUPERUSER
CREATEDB | NOCREATEDB --角色是否可以创建数据库,默认是NOCREATEDB
CREATEROLE | NOCREATEROLE --角色是否可以创建和管理其他角色,默认是NOCREATEROLE
INHERIT | NOINHERIT --角色是否可以继承其他角色的权限,默认是INHERIT
LOGIN | NOLOGIN --角色是否可以登陆数据库,一般来说,如果这个角色是用户,那么应该为login,如果是group,那么应该是nologin
CONNECTION LIMIT connlimit --设置该角色的最大连接数,-1为不限制
PASSWORD ‘password’ --设置角色的密码
ENCRYPTED | UNENCRYPTED VALID UNTIL ‘timestamp’ --密码的有效期,如果password参数未设置或者null,该参数无效
RESOURCE QUEUE queue_name --角色使用的资源队列,默认使用GP数据库默认的资源队列pg_default
DENY {deny_interval | deny_point} --指定拒绝登陆的时间范围
example:
# ALTER ROLE jsmith WITH PASSWORD 'passwd123';
# ALTER ROLE admin VALID UNTIL 'infinity';
# ALTER ROLE jsmith LOGIN;
# ALTER ROLE jsmith RESOURCE QUEUE adhoc;
# ALTER ROLE jsmith DENY DAY 'Sunday';
c、角色的权限管理
--创建一个角色user01
mydb=# create role user01;
NOTICE: resource queue required -- using default
resource queue "pg_default"
CREATE ROLE
--修改角色user01的属性:允许登陆以及密码
mydb=# alter role user01 login password 'user01';
ALTER ROLE
--赋权user01使用模式mysch01的权限
mydb=# grant all on schema mysch01 to user01;
GRANT
--赋权user01查询t01表的权限
mydb=# grant select on t01 to user01;
GRANT
--将一个角色授予另一个角色
mydb=# grant user01 to rol01;
GRANT ROLE
d、查询GP库中的角色情况:
mydb=# select
rolname,rolsuper,rolinherit,rolcreaterole,rolcreatedb,rolcanlogin,rolconnlimit
from pg_roles;
rolname | rolsuper | rolinherit | rolcreaterole |
rolcreatedb | rolcanlogin | rolconnlimit
---------+----------+------------+---------------+-------------+-------------+--------------
rol01 |
f |
t |
f |
f |
t | -1
loach |
f |
t |
f |
t |
t | -1
test |
f |
t |
f |
f |
t | 2
gpadmin |
t |
t |
t |
t |
t | -1
user01