本文为您介绍如何赋予、回收表的权限。
赋予权限
概述
该语句用于系统管理员授予用户某些权限。
说明
- 当前用户必须拥有被授予的权限(例如,
user1把表tbl1的SELECT权限授予user2,则user1必须拥有表tbl1的SELECT的权限),并且拥有GRANT OPTION权限,才能授予成功。- 用户授权后,该用户只有重新连接 OceanBase 数据库,权限才能生效。
语法
GRANT priv_type
ON priv_level
TO user_specification [, user_specification]...
[WITH with_option ...]
priv_type:
ALTER
| CREATE
| CREATE USER
| CREATE VIEW
| DELETE
| DROP
| GRANT OPTION
| INDEX
| INSERT
| PROCESS
| SELECT
| SHOW DATABASES
| SHOW VIEW
| SUPER
| UPDATE
| USAGE
priv_level:
*
| *.*
| database_name.*
| database_name.table_name
| table_name
| database_name.rountine_name
user_specification:
user [IDENTIFIED BY [PASSWORD] 'password']
with_option:
GRANT OPTION
参数解释
| 参数 | 描述 |
|---|---|
| priv_type | 指定授予的权限类型。具体的权限类型及其说明请参见下方权限类型说明表。 同时把多个权限赋予用户时,权限类型用","隔开。 |
| priv_level | 指定授予权限的层级。权限可以分为以下几个层级:
table_name,表示赋予全局权限,即对数据库中的所有表赋权。 |
| user_specification | 给特定用户授予权限。如果用户不存在,可以直接创建用户。 同时给多个用户授权时,用户名以逗号(,)分隔。 |
| user IDENTIFIED BY 'password' | 指定密码为明文。 |
| user IDENTIFIED BY PASSWORD 'password' | 指定密码为密文。 |
| with_option | 是否允许转授指定权限。 |
可以授予的权限类型如下表所示。
| 权限 | 说明 |
|---|---|
| ALL PRIVILEGES | 除 GRANT OPTION 以外所有权限。 |
| ALTER | ALTER TABLE 的权限。 |
| CREATE | CREATE TABLE 的权限。 |
| CREATE USER | CREATE USER、DROP USER、RENAME USER 和 REVOKE ALL PRIVILEGES 的权限。 |
| 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 | CREATE VIEW 与 DROP VIEW 的权限。 |
| SHOW VIEW | SHOW CREATE VIEW 权限。 |
示例
为用户赋予所有权限。
为用户
ny赋予所有权限。obclient> GRANT ALL PRIVILEGES ON *.* TO ny WITH GRANT OPTION; Query OK, 0 rows affected查看用户
ny的权限。obclient> SHOW GRANTS FOR ny; +-------------------------------------------------------+ | Grants for ny@% | +-------------------------------------------------------+ | GRANT ALL PRIVILEGES ON *.* TO 'ny' WITH GRANT OPTION | +-------------------------------------------------------+ 1 row in set
为用户赋予数据库的所有权限。
为
ny用户赋予data_ny库的所有权限。obclient> GRANT ALL PRIVILEGES ON data_ny.* to ny with GRANT OPTION; Query OK, 0 rows affected (0.02 sec)查看
ny用户赋予data_ny库的所有权限。obclient> SHOW GRANTS FOR ny; +---------------------------------------------------------------+ | Grants for ny@% | +---------------------------------------------------------------+ | GRANT USAGE ON *.* TO 'ny' | | GRANT ALL PRIVILEGES ON `data_ny`.* TO 'ny' WITH GRANT OPTION | +---------------------------------------------------------------+ 2 rows in set
为用户赋予某张表的所有权限。
为
ny用户赋予data_ny库中的dws_ny表所有权限。obclient> GRANT ALL PRIVILEGES ON data_ny.dws_ny to ny with GRANT OPTION; Query OK, 0 rows affected查看
ny用户赋予data_ny库中的dws_ny表所有权限。obclient> SELECT * FROM information_schema.TABLE_PRIVILEGES where TABLE_NAME='dws_ny'; +----------+---------------+--------------+------------+----------------+--------------+ | GRANTEE | TABLE_CATALOG | TABLE_SCHEMA | TABLE_NAME | PRIVILEGE_TYPE | IS_GRANTABLE | +----------+---------------+--------------+------------+----------------+--------------+ | 'ny'@'%' | def | data_ny | dws_ny | ALTER | YES | | 'ny'@'%' | def | data_ny | dws_ny | CREATE | YES | | 'ny'@'%' | def | data_ny | dws_ny | DELETE | YES | | 'ny'@'%' | def | data_ny | dws_ny | DROP | YES | | 'ny'@'%' | def | data_ny | dws_ny | INSERT | YES | | 'ny'@'%' | def | data_ny | dws_ny | UPDATE | YES | | 'ny'@'%' | def | data_ny | dws_ny | SELECT | YES | | 'ny'@'%' | def | data_ny | dws_ny | INDEX | YES | | 'ny'@'%' | def | data_ny | dws_ny | CREATE VIEW | YES | | 'ny'@'%' | def | data_ny | dws_ny | SHOW VIEW | YES | +----------+---------------+--------------+------------+----------------+--------------+ 10 rows in set说明
root用户与ny用户下都可以在TABLE_PRIVILEGES表中查询到dws_ny表的权限。
回收权限
概述
该语句用于系统管理员撤销 User 的某些权限。
使用说明如下:
用户必须拥有被撤销的权限(例如,
user1要撤销user2对表t1的SELECT权限,则user1必须拥有表t1的SELECT的权限),并且拥有GRANT OPTION权限。撤销
ALL PRIVILEGES和GRANT OPTION权限时,当前用户必须拥有全局GRANT OPTION权限,或者对权限表的UPDATE及DELETE权限。撤销操作不会级联。例如,用户
user1给user2授予了某些权限,撤回user1的权限不会同时也撤回user2的相应权限。
语法
REVOKE priv_type
ON database.table_name
FROM 'user_name';
priv_type:
ALTER
| CREATE
| CREATE USER
| CREATE VIEW
| DELETE
| DROP
| GRANT OPTION
| INDEX
| INSERT
| PROCESS
| SELECT
| SHOW DATABASES
| SHOW VIEW
| SUPER
| UPDATE
| USAGE
参数解释
| 参数 | 描述 |
|---|---|
| priv_type | 指定撤销的权限类型。具体的权限类型及其说明请参见下方权限类型说明表。 同时对某个用户撤销多个权限时,权限类型用","隔开。 |
| database.table_name | 指定数据库中的表。 用 "*" 代替 database 或 table_name,表示撤销全局权限,即撤销对数据库中所有表的操作权限。 |
| user_name | 指定撤销权限的用户。同时撤销多个用户的授权时,用户名用","隔开。 |
可以撤销的权限类型如下表所示。
| 权限 | 说明 |
|---|---|
| ALL PRIVILEGES | 除 GRANT OPTION 以外所有权限。 |
| ALTER | ALTER TABLE 的权限。 |
| CREATE | CREATE TABLE 的权限。 |
| CREATE USER | CREATE USER、DROPUSER、RENAME USER 和 REVOKE ALL PRIVILEGES 的权限。 |
| 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 | CREATE VIEW 与 DROP VIEW 的权限。 |
| SHOW VIEW | SHOW CREATE VIEW 权限。 |
说明
目前没有 Change Effective Tenant 的权限控制,因此 sys 租户下的用户都可以撤销权限。
示例
为用户移除
update权限。为
ny用户data_ny库中的dws_ny表的update权限。obclient> revoke update on data_ny.dws_ny from ny; Query OK, 0 rows affected查看
ny用户下的data_ny库中的dws_ny表目前的权限。obclient> select * from information_schema.TABLE_PRIVILEGES where TABLE_NAME='dws_ny'; +----------+---------------+--------------+------------+----------------+--------------+ | GRANTEE | TABLE_CATALOG | TABLE_SCHEMA | TABLE_NAME | PRIVILEGE_TYPE | IS_GRANTABLE | +----------+---------------+--------------+------------+----------------+--------------+ | 'ny'@'%' | def | data_ny | dws_ny | ALTER | YES | | 'ny'@'%' | def | data_ny | dws_ny | CREATE | YES | | 'ny'@'%' | def | data_ny | dws_ny | DELETE | YES | | 'ny'@'%' | def | data_ny | dws_ny | DROP | YES | | 'ny'@'%' | def | data_ny | dws_ny | INSERT | YES | | 'ny'@'%' | def | data_ny | dws_ny | SELECT | YES | | 'ny'@'%' | def | data_ny | dws_ny | INDEX | YES | | 'ny'@'%' | def | data_ny | dws_ny | CREATE VIEW | YES | | 'ny'@'%' | def | data_ny | dws_ny | SHOW VIEW | YES | +----------+---------------+--------------+------------+----------------+--------------+ 9 rows in set说明
root用户与ny用户下都可以在TABLE_PRIVILEGES表中查询到dws_ny表的权限。
为用户移除某库的
update权限。为
ny用户data_ny库中的dws_ny表的update权限。obclient> revoke update on data_ny.* from ny; Query OK, 0 rows affected查看
ny用户下的data_ny库当前的权限。obclient> SHOW GRANTS FOR ny; +----------------------------------------------------------------------------------------------------------------------------------+ | Grants for ny@% | +----------------------------------------------------------------------------------------------------------------------------------+ | GRANT USAGE ON *.* TO 'ny' | | GRANT ALTER, CREATE, DELETE, DROP, INSERT, SELECT, INDEX, CREATE VIEW, SHOW VIEW ON `data_ny`.* TO 'ny' WITH GRANT OPTION | | GRANT ALTER, CREATE, DELETE, DROP, INSERT, SELECT, INDEX, CREATE VIEW, SHOW VIEW ON `data_ny`.`dws_ny` TO 'ny' WITH GRANT OPTION | +----------------------------------------------------------------------------------------------------------------------------------+ 3 rows in set
为用户移除
update权限。为用户
ny移除update权限。obclient> revoke UPDATE on *.* from ny; Query OK, 0 rows affected查看
ny用户的当前权限。obclient> SHOW GRANTS FOR ny; +----------------------------------------------------------------------------------------------------------------------------------+ | Grants for ny@% | +----------------------------------------------------------------------------------------------------------------------------------+ | GRANT USAGE ON *.* TO 'ny' | | GRANT ALTER, CREATE, DELETE, DROP, INSERT, SELECT, INDEX, CREATE VIEW, SHOW VIEW ON `data_ny`.* TO 'ny' WITH GRANT OPTION | | GRANT ALTER, CREATE, DELETE, DROP, INSERT, SELECT, INDEX, CREATE VIEW, SHOW VIEW ON `data_ny`.`dws_ny` TO 'ny' WITH GRANT OPTION | +----------------------------------------------------------------------------------------------------------------------------------+ 3 rows in set




