GRANT语句用于系统管理员授予User某些权限。
格式
GRANT priv_type
ON priv_level
TO user_specification [, user_specification]...
[WITH with_option ...]
priv_level:
*
| *.*
| db_name.*
| db_name.tbl_name
| tbl_name
| db_name.rountine_name
user_specification:
user [IDENTIFIED BY [PASSWORD] ‘password’]
with_option:
GRANT OPTION
权限可以分为以下几个层级:
- 全局层级:适用于所有的数据库。使用GRANT ALL ON .授予全局权限。
- 数据库层级:适用于一个给定数据库中的所有目标。使用GRANT ALL ON db_name.*授予数据库权限。
- 表层级:表权限适用于一个给定表中的所有列。使用GRANT ALL ONdb_name.tbl_name授予表权限。
语句中的参数说明如下:
给特定用户授予权限。如果用户不存在,可以直接创建用户。
sql_mode=’no_auto_create_user
’,同时没有identified by指定密码时,不可以直接创建用户。当前用户必须拥有被授予的权限(例如,user1把表t1的SELECT权限授予user2,则user1必须拥有表t1的SELECT的权限),并且拥有GRANT OPTION权限,才能授予成功。
用户授权后,该用户只有重新连接OceanBase,权限才能生效。
用“”代替table_name*,表示赋予全局权限,即对数据库中的所有表赋权。
同时把多个权限赋予用户时,权限类型用“,”隔开。
同时给多个用户授权时,用户名用“,”隔开。
priv_type的值如权限类型表所示。
权限类型表
权限 | 说明 |
ALL PRIVILEGES | 除GRANT OPTION以外所有权限。 |
ALTER | ALTER TABLE的权限。 |
CREATE | CREATE TABLE的权限。 |
CREATE USER | CREATE USER,DROPUSER,RENAME USER和REVOKE ALLPRIVILEGES的权限。 |
CREATE TABLEGROUP | 全局CREATE TABLEGROUP的权限。 |
DELETE | DELETE的权限。 |
DROP | DROP的权限。 |
GRANT OPTION | GRANT OPTION的权限。 |
INSERT | INSERT的权限。 |
SELECT | SELECT的权限。 |
UPDATE | UPDATE的权限。 |
SUPER | SET GLOBAL修改全局系统参数的权限。 |
SHOW DATABASES | 全局 SHOW DATABASES的权限。 |
INDEX | CREATE INDEX, DROP INDEX的权限 |
CREATE VIEW | 创建、删除视图的权限 |
SHOW VIEW | SHOW CREATE VIEW权限 |
说明
说明:目前没有change effective tenant的权限控制,sys租户下的用户都可以。
示例
执行以下命令给 obsqluser01 用户赋予所有权限。
GRANT ALL PRIVILEGES ON *.* TO test1 with grant option;