[TOC] # 修改用户权限 ## 注意事项 对于授予权限操作: * 进行用户授权操作前,请确保当前用户拥有被授予的权限,并且拥有`GRANT OPTION`权限。 * 授权后,被授权的用户需要重新连接 OceanBase 数据库,权限才会生效。 对于移除权限操作: * 当前用户必须拥有被移除的权限,并且拥有`GRANT OPTION`权限。 * 移除`ALL PRIVILEGES`和`GRANT OPTION`权限时,当前用户必须拥有全局`GRANT OPTION`权限,或者对权限表的`UPDATE`及`DELETE`权限。 * 权限移除操作不会级联。例如,用户`user1`为`user2`授予了某些权限,移除`user1`的权限并不会同时也移除`user2`的相应权限。 ## 通过 SQL 语句授予或移除权限 * MySQL 模式 MySQL 模式下用户权限管理语句的语法如下: ~~~ grant_stmt: GRANT privilege_type_list ON privilege_level TO user_option_list [WITH GRANT OPTION]; revoke_stmt: REVOKE privilege_type_list ON privilege_level FROM user_name_list; show_grants_stmt: SHOW GRANTS [FOR user_name]; privilege_type_list: {ALL [PRIVILEGES] | privilege_type [, privilege_type ...]} privilege_type: ALTER | CREATE | CREATE USER | CREATE VIEW | DELETE | DROP | GRANT OPTION | INDEX | INSERT | PROCESS | SELECT | SHOW DATABASES | SHOW VIEW | SUPER | UPDATE | USAGE privilege_level: * | *.* | database_name.* | database_name.table_name | table_name user_option_list: user_option [, user_option ...] user_option: user_name [IDENTIFIED BY 'password'] password: STR_VALUE user_name_list: user_name [, user_name ...] ~~~ 相关示例如下: * 授予权限 ~~~ obclient> GRANT ALL PRIVILEGES ON *.* TO demo WITH GRANT OPTION; ~~~ * 移除权限 ~~~ obclient> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'demo'; Query OK, 0 rows affected (0.03 sec) ~~~