Hologres兼容PostgreSQL,采用与标准PostgreSQL语句相同的授权体系(简称专家模式)。本文为您介绍Hologres如何使用专家权限模型对用户授权及撤销授权。
专家权限模型授权
在Hologres实例连接开发工具后,可以使用SQL语句通过专家权限模型授权,使该用户具有实例的相关权限。
未来表授权
由于专家模式授权不包含对未来表的授权,因此需要使用ALTER DEFAULT PRIVILEGES语句对未来表进行授权。具体操作步骤如下:
说明
- 该命令语句不影响已有的逻辑对象。
- 该命令语句只能设置TABLE、SCHEMA、FUNCTION、SEQUENCE或TYPE的默认权限。
专家模式撤销授权
使用REVOKE语句撤销用户权限的示例如下,更多关于权限的撤销操作,请参见REVOKE。
REVOKE SELECT ON TABLE tablename FROM "云账号ID/云邮箱" ; --如果是RAM用户,账号格式请使用RAM用户的表达格式。
查看权限
通过以下SQL命令查看用户的角色及权限。
SELECT ROLNAME FROM pg_roles;
SELECT user_display_name(ROLNAME) FROM pg_roles;
删除用户
若您的实例已经连接开发工具,您可以使用SQL语句进行删除子账号,分为如下两种情况。
- 删除普通用户
如果是删除普通用户,并且该账号没有创建其他对象(如表、视图、extension等),可以执行以下命令语句或者直接在HoloWeb删除用户。
drop user "云账号ID/云邮箱";
- 删除Superuser等管理员
若是要删除Superuser、Admin等管理员,但是该账号创建过表、视图、extension等实例内对象,并且是这些对象的管理员(尤其是专家权限模型下),若是直接删除用户会报错,需要先将该账号下的对象进行转移,执行以下命令语句。
-- 将A账号下的对象转给B reassign owned by "A云账号ID" to "B云账号ID"; -- 删除A账号 drop user "A云账号ID";
您可以使用以下方式删除实例中的RAM用户:
DROP USER "云账号ID/云邮箱";
重要 RAM用户被删除后,将不能连接实例并访问实例内的任何对象,请您谨慎操作。
标准的PostgreSQL对于权限有着非常严格的划分,对此我们提供最佳实践供您根据业务需求选择和参考,详情请参见基于PostgreSQL标准权限模型授权。