CockroachDB中存在 GRANT <privileges> 语句 让我们控制每一个 角色 或者 用户 和指定数据库或数据表上拥有的SQL 权限.

对于指定语句所需要的权限,请查看各自相关SQL语句的文档

概要

图片

需要的权限

用户授予权限必须拥有对应数据库库或表的GRANT权限才可以对其做授权

支持的权限

角色和用户可以被授予以下权限。有些权限既适用于数据库也适用于表,还有一些权限仅适用于表(参见下表中的级别)

权限 级别
ALL Database, Table
CREATE Database, Table
DROP Database, Table
GRANT Database, Table
SELECT Table
INSERT Table
DELETE Table
UPDATE Table

参数

参数 描述
table_name 表示用逗号分隔的表名列表.

使用符号 *ON TABLE datase_name.* 可以给予所有该数据库下所有数据表权限。授权将会对现有的表给予权限,而在这之后创建的表将不会给予权限。
database_name 表示用逗号分隔的数据库名列表.

数据库的授权后,后续在此库中创建的表将会继承库权限,而现有存在的表则不会受到影响。
user_name 你想授权的用户 或者 角色对象。
## 例子

对数据库授权

GRANT CREATE ON DATABASE db1, db2 TO maxroach, betsyroach; SHOW GRANTS ON DATABASE db1, db2;

授权结果

| Database |    User    | Privileges |
----------|------------|------------
| db1      | betsyroach | CREATE     |
| db1      | maxroach   | CREATE     |
| db1      | root       | ALL        |
| db2      | betsyroach | CREATE     |
| db2      | maxroach   | CREATE     |
| db2      | root       | ALL        |

对数据库中指定表授权

GRANT DELETE ON TABLE db1.t1, db1.t2 TO betsyroach; SHOW GRANTS ON TABLE db1.t1, db1.t2;

授权结果

| Table |    User    | Privileges |
--------|------------|------------
| t1    | betsyroach | DELETE     |
| t1    | root       | ALL        |
| t2    | betsyroach | DELETE     |
| t2    | root       | ALL        |

对数据库中所有表授权

GRANT SELECT ON TABLE db2.* TO henryroach; SHOW GRANTS ON TABLE db2.*;

授权结果

| Table |    User    | Privileges |
--------|------------|------------
| t1    | henryroach | SELECT     |
| t1    | root       | ALL        |
| t2    | henryroach | SELECT     |
| t2    | root       | ALL        |

其他