用户
⚫ 用户
使用数据库系统服务的个体
职责单一,往往附属于某个组织或部门
⚫ 用户可以做什么
使用工具连接数据库
访问数据库对象
执行SQL语句
角色
⚫ 角色
角色是一组用户的集合,按照数据库系统中承担的责任划分具有不同权限的角色;角色用来作 为权限集合的载体。
角色代表了一个或一组数据库用户的行为约束。
⚫ openGauss提供了一个隐式定义的拥有所有角色的组PUBLIC,所有创建的用户和角色默 认拥有PUBLIC所拥有的权限。
⚫ 要撤销或重新授予用户和角色对PUBLIC的权限,可通过在GRANT和REVOKE指定关键字 PUBLIC实现。
用户与角色
⚫ 用户是实体,角色是行为。
⚫ 用户可被赋予一个或多个角色。
⚫ 角色是一种权限集合,不应该具有登录数据库并执行SQL的能力。
⚫ 对用户权限的管理,可以简化为对角色权限的管理。
⚫ 在openGauss中,用户和角色使用相同的操作方式与维护方式。
用户角色相关操作
⚫ 创建类操作,查看CREATE USER语法。(CREATE ROLE与CREATE USER相同)。
⚫ 修改类操作,查看ALTER USER语法。
⚫ 查询类操作:
openGauss的用户、角色属性维护在pg_authid系统表中,pg_user、pg_roles视图也可以查询 用户、角色信息。
使用\d命令查看pg_authid表详细信息。
使用select命令查询pg_authid中的相关信息。
postgres=# \d pg_authid
postgres=# select * from pg_authid;
⚫ 删除类操作:
查看DROP USER语法。
当用户拥有数据库对象时,默认是RESTRICT无法删除用户的,需要使用CASCADE选项。
设置用户账号有效期
⚫ 创建新用户时,需要限制用户的操作期限(有效开始时间和有效结束时间)。
⚫ 不在有效操作期内的用户需要重新设定帐号的有效操作期。
创建用户并指定用户的有效开始时间和有效结束时间。
CREATE USER joe WITH PASSWORD ‘Bigdata@123’ VALID BEGIN ‘2015-10-10 08:00:00’ VALID UNTIL ‘2016- 10-10 08:00:00’;
用户已不在有效使用期内,需要重新设定帐号的有效期,这包括有效开始时间和有效结束时间。
ALTER USER joe WITH VALID BEGIN ‘2016-11-10 08:00:00’ VALID UNTIL ‘2017-11-10 08:00:00’;
注意:若在“CREATE ROLE”或“ALTER ROLE”语法中不指定“VALID BEGIN”,表示不对 用户的开始操作时间做限定;若不指定“VALID UNTIL”,表示不对用户的结束操作时间做限 定;若两者均不指定,表示该用户一直有效。
手动锁定和解锁帐户命令
⚫ 以手动锁定和解锁用户user_read为例,命令格式如下。
⚫ 手动锁定:
ALTER USER user_read ACCOUNT LOCK;
显示如下结果表示锁定成功
ALTER ROLE
⚫ 手动解锁:
ALTER USER user_read ACCOUNT UNLOCK;
显示如下结果表示解锁成功
ALTER ROLE
私有用户
⚫ 背景:
对于有多个业务部门,各部门间使用不同的数据库用户进行业务操作,同时同级的数据库维护部门使用管理员用户进 行维护操作的场景下,业务部门希望在未经授权的情况下,管理员用户只能对各部门的数据进行控制操作(DROP、 ALTER、TRUNCATE),不能进行访问操作(INSERT、DELETE、UPDATE、SELECT、COPY)。即针对管理员用户, 表对象的控制权和访问权要能够分离,以提高普通用户数据安全性。
三权分立情况下,管理员对其他用户放在属于各自模式下的表无权限。但是,这种无权限包含了无控制权限,因此不 能满足上面的诉求。为此,openGauss提供了私有用户方案。即在非三权分立模式下,创建具有INDEPENDENT属性 的私有用户。
⚫ 定义:
CREATE USER user_independent WITH INDEPENDENT IDENTIFIED BY “1234@abc”;
针对该用户的对象,数据库管理员在未经其授权前,只能进行控制操作(DROP、ALTER、TRUNCATE),无权进行 INSERT、DELETE、SELECT、UPDATE、COPY、GRANT、REVOKE、ALTER OWNER操作。