首批通过分布式安全可靠测评,为关键业务系统打造
GRANT
更新时间:2026-04-10 11:58:35
描述
GRANT 语句用于系统管理员授予用户某些权限。
权限要求
执行
GRANT语句时,当前用户必须拥有被授予的权限。例如,想要使用用户user1为用户user2授予表tbl1的SELECT权限,则用户user1必须拥有表tbl1的SELECT权限。执行
GRANT语句时,当前用户需拥有GRANT OPTION权限。关 OceanBase 数据库权限的详细介绍,请参见 MySQL 模式下的权限分类。
说明
为用户授权后,该用户需重新连接 OceanBase 数据库,权限才能生效。
语法
GRANT {priv_type [, priv_type...]}
ON priv_level
TO {user [, user...]}
[WITH GRANT OPTION]
user:
user_name
| user_name IDENTIFIED [WITH auth_plugin] BY password
| user_name IDENTIFIED [WITH auth_plugin] BY PASSWORD password
参数解释
| 参数 | 描述 |
|---|---|
| priv_type | 指定授予的权限类型,可以授予多个权限,多个权限间使用英文逗号(,)隔开。具体的权限类型及其说明请参见 MySQL 模式下的权限分类。 |
| priv_level | 指定授予权限的层级。可以指定在所有数据库和所有表上生效(*.*)、指定数据库或指定表生效(db_name.*,*.table_name)、或者特定的数据库中特定的表生效(db_name.table_name)。 |
| user | 指定要授予权限的用户,可以是一个或多个用户,多个用户间使用英文逗号(,)隔开。如果用户不存在,该语句会直接创建用户。 |
| auth_plugin | 用于指定用户身份验证的方式,目前仅支持 mysql_native_password 身份验证插件。 |
| BY password | 为待授权的用户指定一个密码,此处密码为明文,存入 mysql.user 表后,服务器端会变为密文存储下来。如果密码中包含特殊字符 ~!@#%^&*_-+=`|(){}[]:;',.?/,需使用英文引号('' 或 "")包含。 |
| BY PASSWORD password | 为待授权的用户指定一个密码,此处密码为密文,将直接存入 mysql.user 表。 |
| WITH GRANT OPTION | 指定权限是否允许转授,取消授权时级联。 |
示例
为已存在的用户
user1赋予数据库db1的CREATE VIEW权限,并设置允许转授其他用户相同的权限。obclient> GRANT CREATE VIEW ON db1.* TO user1 WITH GRANT OPTION;为已存在的用户
user1赋予数据库db1的CREATE权限,并修改user1的密码。obclient> GRANT CREATE ON db1.* TO user1 IDENTIFIED by '********';执行后查看
mysql.user表中user1用户的密码,会看到已更新为最新设置的密码。为不存在的用户
user2赋予数据库db1的CREATE权限,并为user2设置密码。obclient> GRANT CREATE ON db1.* TO user2 IDENTIFIED by '********';
相关文档
授予用户权限的操作可参见 授予权限。
查看用户权限的操作可参见 查看用户权限。
可从
mysql.user表中查看创建的用户信息,mysql.user表的详细介绍可参见 mysql.user。