ACL权限体系
AnalyticDB for MySQL 2.0支持基于数据库表的层级权限管理模型,提供类似MySQL的ACL授权模式。一个ACL授权由被授权的用户、授权对象和授予的对象权限组成。和MySQL不同的是,AnalyticDB for MySQL 2.0目前不支持针对用户在Host上授权。
以下列出AnalyticDB for MySQL 2.0的权限对象和各对象权限:
Database(库),即
db_name.*
或*
(默认数据库),指定数据库或数据库上所有表/表组。TableGroup(表组),即
db_name.table_group_name
或table_group_name
,特定表组。Table(表),即
db_name.table_name
或table_name
,特定表。Column(列),语法上由
column_list
和Table组成,指定表的特定列。
权限模型说明
权限按数据库 > 表组 >表 > 列的顺序依次向下继承。
注意:如果某个账号有数据库级别的权限但回收了某个表的权限,则这个账号依然拥有该表的权限。
在数据库级别,某个权限实际可能包含多个权限,例如
GRANT CREATE ON *.*
同时包含创建数据表和创建表组的权限。
权限类型 | 数据库级别 | 表组级别 | 表级别 | 列级别 | 说明 |
---|---|---|---|---|---|
SELECT | ✔️ | ✔️ | ✔️ | ✔️ | 查询数据。 |
LOAD DATA | ✔️ | ✔️ | ✔️ | ✖️ | 导入表(分区)数据。 |
DUMP DATA | ✔️ | ✔️ | ✔️ | ✖️ | 导出表(分区)数据。 |
DESCRIBE | ✔️ | ✔️ | ✔️ | ✖️ | 查看数据库、表/表组信息(Global、Database)、查看表/表组信息(Table[Group])。 |
SHOW | ✔️ | ✔️ | ✔️ | ✖️ | 列出数据库、表/表组内部对象(Global、Database)、列出表内部对象(Table[Group])。 |
ALTER | ✔️ | ✔️ | ✔️ | ✖️ | 修改表/表组定义。 |
DROP | ✔️ | ✔️ | ✔️ | ✖️ | 删除数据库、表/表组或分区(Global、Database)、删除表/表组或分区(Table[Group])。 |
CREATE | ✔️ | ✔️ | ✔️ | ✖️ | 创建表/表组。 |
INSERT | ✔️ | ✔️ | ✔️ | ✖️ | 执行Insert的权限。 |
DELETE | ✔️ | ✔️ | ✔️ | ✖️ | 执行Delete的权限。 |
ALL [PRIVILEGES] | ✔️ | ✔️ | ✔️ | ✔️ | 以上所有权限。 |
例如,执行LOAD DATA
命令可以向数据库或者表导入数据,但不支持仅向表中的某一列导入数据。
注意事项
权限聚合。按照Database > Table[Group] > Column由高到低的权限级别,高级别聚合低级别的所有权限。
使用阿里云账号在阿里云官网开通分析型数据库MySQL版服务后即可获取创建数据库的权限,无法通过授权方式获取创建数据库的权限。
部分查询操作不需要SELECT权限,例如
SELECT now()
。导出数据需要
DUMP DATA
、SELECT
权限以及导出目的地的数据写入相关权限。