1. 用户权限管理
01. 创建用户并分配权限
创建用户并分配系统权限
创建一个具有创建数据库权限的用户:
CREATE USER joe WITH CREATEDB PASSWORD "GAUSS@123";
给用户指定对象权限
将表student的select权限赋给用户joe:
GRANT SELECT ON TABLE student to joe;
给角色赋予对象权限
将表teacher的select权限赋给角色lily:
GRANT SELECT ON TABLE teacher to lily;
将角色的权限赋予用户
将角色lily的权限赋给用户joe:
GRANT lily to joe;
02. 查看用户或角色的权限
1.查看用户joe的系统权限,执行如下命令:
\du joe
结果显示如下:
List of roles
Role name | Attributes | Member of
-----------+------------+-----------
JOE | Create DB | {
}
结果显示中的Create DB代表用户joe有创建数据库的权限。
2.执行如下命令切换到用户joe
set role joe password "gaussdb@123";
执行:
SELECT * FROM ALL_OBJECTS WHERE OBJECT_TYPE='TABLE';
结果显示为如下,则表示查询成功。
OWNER | OBJECT_NAME | OBJECT_ID | OBJECT_TYPE | NAMESPACE
----------+-------------------------+-----------+-------------+-----------
GAUSSDBA | SQL_PACKAGES | 12898 | TABLE | 12760
GAUSSDBA | PG_ENUM | 3501 | TABLE | 11
GAUSSDBA | PG_LARGEOBJECT | 2613 | TABLE | 11
GAUSSDBA | PG_DIRECTORY | 3222 | TABLE | 11
............
03. 修改用户和权限
更改用户joe的系统权限,为它添加创建用户的系统权限并去掉它创建数据的系统权限,执行如下命令:
ALTER USER joe WITH NOCREATEDB CREATEROLE PASSWORD "Gauss@123";
04. 删除用户
删除一个用户joe,执行如下命令:
DROP USER joe;