400-800-0824
info@ymatrix.cn
400-800-0824
info@ymatrix.cn
400-800-0824
info@ymatrix.cn
400-800-0824
info@ymatrix.cn
400-800-0824
info@ymatrix.cn
YMatrix 文档
关于 YMatrix
标准集群部署
数据写入
数据迁移
数据查询
运维监控
参考指南
工具指南
数据类型
存储引擎
执行引擎
系统配置参数
SQL 参考
常见问题(FAQ)
新架构 FAQ
集群部署 FAQ
SQL 查询 FAQ
MatrixGate FAQ
运维 FAQ
监控告警 FAQ
PXF FAQ
PLPython FAQ
性能 FAQ
设置当前会话的当前角色标识符。
SET [SESSION | LOCAL] ROLE rolename
SET [SESSION | LOCAL] ROLE NONE
RESET ROLE
此命令将当前SQL会话上下文的当前角色标识符设置为rolename。 角色名称可以写为标识符或字符串文字。 在SET ROLE之后,将执行SQL命令的权限检查,就好像新角色是最初登录的角色一样。
指定的rolename必须是当前会话用户所属的角色。 如果会话用户是超级用户,则可以选择任何角色。
NONE和RESET表单将当前角色标识符重置为当前会话角色标识符。 这些表格可以由任何用户执行。
SESSION
LOCAL
rolename
NONE
RESET
使用此命令,可以添加特权或限制特权。 如果会话用户角色具有INHERITS属性,则它将自动拥有可以SET ROLE的每个角色的所有特权; 在这种情况下,SET ROLE有效地放弃直接分配给会话用户及其成员的其他角色的所有特权,仅保留命名角色可用的特权。 另一方面,如果会话用户角色具有NOINHERITS属性, 则SET ROLE会删除直接分配给会话用户的特权,而是获取可用于命名角色的特权。
特别是,当超级用户选择将SET ROLE设置为非超级用户角色时,她将失去其超级用户特权。
SET ROLE具有与SET SESSION AUTHORIZATION相同的效果,但是所涉及的特权检查却大不相同。 同样,SET SESSION AUTHORIZATION确定以后的SET ROLE命令允许哪些角色, 而使用SET ROLE不会更改后续SET ROLE可以更改的角色集。
SET ROLE不处理由角色的ALTER ROLE设置指定的会话变量。 会话变量仅在登录期间处理。
SELECT SESSION_USER, CURRENT_USER;
session_user | current_user
--------------+--------------
peter | peter
SET ROLE 'paul';
SELECT SESSION_USER, CURRENT_USER;
session_user | current_user
--------------+--------------
peter | paul
YMatrix 数据库允许使用标识符语法(rolename),而SQL标准要求将角色名称写为字符串文字。 SQL在事务期间不允许使用此命令。 YMatrix 数据库没有进行此限制。 SESSION和LOCAL修饰符是 YMatrix 数据库的扩展名,RESET语法也是如此。