- 向 ClickHouse 用户账户或角色授予 特权。
- 向用户账户或其他角色分配角色。
权限授予语法
privilege— 特权类型。role— ClickHouse 用户角色。user— ClickHouse 用户账户。
WITH GRANT OPTION 子句会授予 user 或 role 执行 GRANT 查询的权限。用户可以授予与自己已有特权范围相同或更小范围的特权。
WITH REPLACE OPTION 子句会用新特权替换 user 或 role 的旧特权;如果未指定,则会追加特权。
角色分配语法
role— ClickHouse 用户角色。user— ClickHouse 用户账户。
WITH ADMIN OPTION 子句会向 user 或 role 授予 ADMIN OPTION 特权。
WITH REPLACE OPTION 子句会将 user 或 role 的旧角色替换为新角色;如果未指定,则会追加角色。
GRANT CURRENT GRANTS 语法
privilege— 特权的类型。role— ClickHouse 用户角色。user— ClickHouse 用户账户。
CURRENT GRANTS 语句可将所有指定特权授予给定的用户或角色。
如果未指定任何特权,则给定的用户或角色将获得 CURRENT_USER 的所有可用特权。
用法
GRANT,你的账户必须具有 GRANT OPTION 特权。你只能在自己账户所拥有特权的范围内授予特权。
例如,管理员通过以下查询向 john 账户授予特权:
john 有权执行:
SELECT x,y FROM db.table。SELECT x FROM db.table。SELECT y FROM db.table。
john 不能执行 SELECT z FROM db.table。SELECT * FROM db.table 也不允许。处理该查询时,ClickHouse 不会返回任何数据,连 x 和 y 也不会返回。唯一的例外是表中只有 x 和 y 两列。在这种情况下,ClickHouse 会返回全部数据。
此外,john 还拥有 GRANT OPTION 特权,因此可以将相同或更小范围的权限授予其他用户。
始终允许访问 system 数据库 (因为处理查询时会使用该数据库) 。
虽然新用户默认可以访问许多系统表,但在没有授权的情况下,他们默认可能无法访问所有系统表。
此外,出于安全原因,Cloud 用户对某些系统表 (例如
system.zookeeper) 的访问会受到限制。GRANT SELECT, INSERT ON *.* TO john, robin 允许账户 john 和 robin 对服务器上所有数据库中的所有表执行 INSERT 和 SELECT 查询。
通配符授权
*) 代替表名或数据库名。例如,GRANT SELECT ON db.* TO john 查询允许 john 对 db 数据库中的所有表执行 SELECT 查询。
此外,你还可以省略数据库名。在这种情况下,特权会授予当前数据库。
例如,GRANT SELECT ON * TO john 会授予当前数据库中所有表的特权,GRANT SELECT ON mytable TO john 会授予当前数据库中 mytable 表的特权。
下文所述功能自 ClickHouse 24.10 版本起可用。
GRANT SELECT ON db.my_tables* TO john。该查询允许 john 对 db 数据库中所有名称匹配 my_tables* 前缀模式的表执行 SELECT 查询。
更多示例:
GRANT SELECT ON db.my_tables* TO john
GRANT SELECT ON db*.* TO john
GRANT SELECT ON db.* TO john 查询,然后创建一个新表 db.new_table,那么用户 john 将能够执行 SELECT * FROM db.new_table 查询。
你只能为前缀指定星号:
特权
ALL访问管理ALLOW SQL SECURITY NONEALTER QUOTAALTER ROLEALTER ROW POLICYALTER SETTINGS PROFILEALTER USERCREATE QUOTACREATE ROLECREATE ROW POLICYCREATE SETTINGS PROFILECREATE USERDROP QUOTADROP ROLEDROP ROW POLICYDROP SETTINGS PROFILEDROP USERROLE ADMINSHOW ACCESSSHOW QUOTASSHOW ROLESSHOW ROW POLICIESSHOW SETTINGS PROFILESSHOW USERS
ALTERALTER DATABASEALTER DATABASE SETTINGS
ALTER TABLEALTER COLUMNALTER ADD COLUMNALTER CLEAR COLUMNALTER COMMENT COLUMNALTER DROP COLUMNALTER MATERIALIZE COLUMNALTER MODIFY COLUMNALTER RENAME COLUMN
ALTER CONSTRAINTALTER ADD CONSTRAINTALTER DROP CONSTRAINT
ALTER DELETEALTER FETCH PARTITIONALTER FREEZE PARTITIONALTER INDEXALTER ADD INDEXALTER CLEAR INDEXALTER DROP INDEXALTER MATERIALIZE INDEXALTER ORDER BYALTER SAMPLE BY
ALTER MATERIALIZE TTLALTER MODIFY COMMENTALTER MOVE PARTITIONALTER PROJECTIONALTER SETTINGSALTER STATISTICSALTER ADD STATISTICSALTER DROP STATISTICSALTER MATERIALIZE STATISTICSALTER MODIFY STATISTICS
ALTER TTLALTER UPDATEALTER TABLE EXECUTE
ALTER VIEWALTER VIEW MODIFY QUERYALTER VIEW REFRESHALTER VIEW MODIFY SQL SECURITY
BACKUPCLUSTERCREATECREATE ARBITRARY TEMPORARY TABLECREATE TEMPORARY TABLE
CREATE DATABASECREATE DICTIONARYCREATE FUNCTIONCREATE RESOURCECREATE TABLECREATE VIEWCREATE WORKLOAD
dictGetdisplaySecretsInShowAndSelectDROPDROP DATABASEDROP DICTIONARYDROP FUNCTIONDROP RESOURCEDROP TABLEDROP VIEWDROP WORKLOAD
INSERT内部信息addressToLineaddressToLineWithInlinesaddressToSymboldemangle
KILL QUERYKILL TRANSACTIONMOVE PARTITION BETWEEN SHARDSNAMED COLLECTION ADMINALTER NAMED COLLECTIONCREATE NAMED COLLECTIONDROP NAMED COLLECTIONNAMED COLLECTIONSHOW NAMED COLLECTIONSSHOW NAMED COLLECTIONS SECRETS
OPTIMIZESELECTSET DEFINERSHOWSHOW COLUMNSSHOW DATABASESSHOW DICTIONARIESSHOW TABLES
SHOW FILESYSTEM CACHES数据源AZUREFILEHDFSHIVEJDBCKAFKAMONGOMYSQLNATSODBCPOSTGRESRABBITMQREDISREMOTES3SQLITEURL
SYSTEMSYSTEM CLEANUPSYSTEM DROP CACHESYSTEM DROP COMPILED EXPRESSION CACHESYSTEM DROP CONNECTIONS CACHESYSTEM DROP DISTRIBUTED CACHESYSTEM DROP DNS CACHESYSTEM DROP FILESYSTEM CACHESYSTEM DROP FORMAT SCHEMA CACHESYSTEM DROP MARK CACHESYSTEM DROP MMAP CACHESYSTEM DROP PAGE CACHESYSTEM DROP PRIMARY INDEX CACHESYSTEM DROP QUERY CACHESYSTEM DROP S3 CLIENT CACHESYSTEM DROP SCHEMA CACHESYSTEM DROP UNCOMPRESSED CACHE
SYSTEM DROP PRIMARY INDEX CACHESYSTEM DROP REPLICASYSTEM FAILPOINTSYSTEM FETCHESSYSTEM FLUSHSYSTEM FLUSH ASYNC INSERT QUEUESYSTEM FLUSH LOGS
SYSTEM JEMALLOCSYSTEM KILL QUERYSYSTEM KILL TRANSACTIONSYSTEM LISTENSYSTEM LOAD PRIMARY KEYSYSTEM MERGESSYSTEM MOVESSYSTEM PULLING REPLICATION LOGSYSTEM REDUCE BLOCKING PARTSSYSTEM REPLICATION QUEUESSYSTEM REPLICA READINESSSYSTEM RESTART DISKSYSTEM RESTART REPLICASYSTEM RESTORE REPLICASYSTEM RELOADSYSTEM RELOAD ASYNCHRONOUS METRICSSYSTEM RELOAD CONFIGSYSTEM RELOAD DICTIONARYSYSTEM RELOAD EMBEDDED DICTIONARIESSYSTEM RELOAD FUNCTIONSYSTEM RELOAD MODELSYSTEM RELOAD USERS
SYSTEM SENDSSYSTEM DISTRIBUTED SENDSSYSTEM REPLICATED SENDS
SYSTEM SHUTDOWNSYSTEM SYNC DATABASE REPLICASYSTEM SYNC FILE CACHESYSTEM SYNC FILESYSTEM CACHESYSTEM SYNC REPLICASYSTEM SYNC TRANSACTION LOGSYSTEM THREAD FUZZERSYSTEM TTL MERGESSYSTEM UNFREEZESYSTEM UNLOAD PRIMARY KEYSYSTEM VIEWSSYSTEM VIRTUAL PARTS UPDATESYSTEM WAIT LOADING PARTS
表引擎TRUNCATEUNDROP TABLE
NONE
ALTER特权包含所有其他ALTER*特权。ALTER CONSTRAINT包含ALTER ADD CONSTRAINT和ALTER DROP CONSTRAINT特权。
COLUMN— 特权可授予列、表、数据库或全局。TABLE— 特权可授予表、数据库或全局。VIEW— 特权可授予视图、数据库或全局。DICTIONARY— 特权可授予字典、数据库或全局。DATABASE— 特权可授予数据库或全局。GLOBAL— 特权只能在全局级别授予。GROUP— 对不同级别的特权进行分组。授予GROUP级别的特权时,只会授予该组中与所使用语法相对应的那些特权。
GRANT SELECT(x) ON db.table TO userGRANT SELECT ON db.* TO user
GRANT CREATE USER(x) ON db.table TO userGRANT CREATE USER ON db.* TO user
SELECT、CREATE TABLE、INSERT 和 DROP TABLE。
SELECT
COLUMN。
说明
被授予此特权的用户可以对指定数据库中指定表的指定列执行 SELECT 查询。如果查询中包含了未指定的其他列,则不会返回任何数据。
请看下面这个特权:
john 执行任何涉及 db.table 中 x 和/或 y 列数据的 SELECT 查询,例如 SELECT x FROM db.table。john 不能执行 SELECT z FROM db.table。SELECT * FROM db.table 同样不被允许。处理此查询时,ClickHouse 不会返回任何数据,包括 x 和 y 在内。唯一的例外是当表中只包含 x 和 y 列时,此时 ClickHouse 会返回所有数据。
INSERT
COLUMN。
描述
被授予此特权的用户,可以对指定数据库和表中指定的一组列执行 INSERT 查询。如果用户包含了未指定的其他列,则查询不会插入任何数据。
示例
john 向 db.table 的 x 和/或 y 列中插入数据。
ALTER
ALTER。级别:COLUMN。ALTER TABLE。级别:GROUPALTER UPDATE。级别:COLUMN。别名:UPDATEALTER DELETE。级别:COLUMN。别名:DELETEALTER COLUMN。级别:GROUPALTER ADD COLUMN。级别:COLUMN。别名:ADD COLUMNALTER DROP COLUMN。级别:COLUMN。别名:DROP COLUMNALTER MODIFY COLUMN。级别:COLUMN。别名:MODIFY COLUMNALTER COMMENT COLUMN。级别:COLUMN。别名:COMMENT COLUMNALTER CLEAR COLUMN。级别:COLUMN。别名:CLEAR COLUMNALTER RENAME COLUMN。级别:COLUMN。别名:RENAME COLUMNALTER INDEX。级别:GROUP。别名:INDEXALTER ORDER BY。级别:TABLE。别名:ALTER MODIFY ORDER BY,MODIFY ORDER BYALTER SAMPLE BY。级别:TABLE。别名:ALTER MODIFY SAMPLE BY,MODIFY SAMPLE BYALTER ADD INDEX。级别:TABLE。别名:ADD INDEXALTER DROP INDEX。级别:TABLE。别名:DROP INDEXALTER MATERIALIZE INDEX。级别:TABLE。别名:MATERIALIZE INDEXALTER CLEAR INDEX。级别:TABLE。别名:CLEAR INDEXALTER CONSTRAINT。级别:GROUP。别名:CONSTRAINTALTER ADD CONSTRAINT。级别:TABLE。别名:ADD CONSTRAINTALTER DROP CONSTRAINT。级别:TABLE。别名:DROP CONSTRAINTALTER TTL。级别:TABLE。别名:ALTER MODIFY TTL,MODIFY TTLALTER MATERIALIZE TTL。级别:TABLE。别名:MATERIALIZE TTLALTER SETTINGS。级别:TABLE。别名:ALTER SETTING,ALTER MODIFY SETTING,MODIFY SETTINGALTER MOVE PARTITION。级别:TABLE。别名:ALTER MOVE PART,MOVE PARTITION,MOVE PARTALTER FETCH PARTITION。级别:TABLE。别名:ALTER FETCH PART,FETCH PARTITION,FETCH PARTALTER FREEZE PARTITION。级别:TABLE。别名:FREEZE PARTITIONALTER EXECUTE。级别:TABLE。别名:ALTER TABLE EXECUTEALTER VIEW。级别:GROUPALTER VIEW REFRESH。级别:VIEW。别名:REFRESH VIEWALTER VIEW MODIFY QUERY。级别:VIEW。别名:ALTER TABLE MODIFY QUERYALTER VIEW MODIFY SQL SECURITY。级别:VIEW。别名:ALTER TABLE MODIFY SQL SECURITY
ALTER特权包含所有其他ALTER*特权。ALTER CONSTRAINT包含ALTER ADD CONSTRAINT和ALTER DROP CONSTRAINT特权。
MODIFY SETTING特权允许修改表引擎设置。它不会影响其他设置或服务器配置参数。ATTACH操作需要 CREATE 特权。DETACH操作需要 DROP 特权。- 要通过 KILL MUTATION 查询停止变更,你需要拥有启动该变更所需的特权。例如,如果你想停止
ALTER UPDATE查询,则需要ALTER UPDATE、ALTER TABLE或ALTER特权。
BACKUP
BACKUP]。有关 backups 的更多信息,请参阅”备份与恢复”。
CREATE
CREATE。级别:GROUPCREATE DATABASE。级别:DATABASECREATE TABLE。级别:TABLECREATE ARBITRARY TEMPORARY TABLE。级别:GLOBALCREATE TEMPORARY TABLE。级别:GLOBAL
CREATE VIEW。级别:VIEWCREATE DICTIONARY。级别:DICTIONARY
- 要删除已创建的表,用户需要 DROP 特权。
CLUSTER
ON CLUSTER 查询。
Syntax
ON CLUSTER 的查询要求用户拥有 CLUSTER 授权。
如果在未先授予 CLUSTER 特权的情况下尝试在查询中使用 ON CLUSTER,则会出现以下错误:
config.xml 中 access_control_improvements 部分里的 on_cluster_queries_require_cluster_grant 设置项 (见下文) 设为 false 来更改默认行为。
config.xml
DROP
DROP。级别:GROUPDROP DATABASE。级别:DATABASEDROP TABLE。级别:TABLEDROP VIEW。级别:VIEWDROP DICTIONARY。级别:DICTIONARY
TRUNCATE
TABLE。
OPTIMIZE
TABLE。
SHOW
SHOW、DESCRIBE、USE 和 EXISTS 查询:
SHOW。级别:GROUPSHOW DATABASES。级别:DATABASE。允许执行SHOW DATABASES、SHOW CREATE DATABASE、USE <database>查询。SHOW TABLES。级别:TABLE。允许执行SHOW TABLES、EXISTS <table>、CHECK <table>查询。SHOW COLUMNS。级别:COLUMN。允许执行SHOW CREATE TABLE、DESCRIBE查询。SHOW DICTIONARIES。级别:DICTIONARY。允许执行SHOW DICTIONARIES、SHOW CREATE DICTIONARY、EXISTS <dictionary>查询。
SHOW 特权。
KILL QUERY
GLOBAL。
注意
KILL QUERY 特权允许用户终止其他用户的查询。
访问管理
ACCESS MANAGEMENT。级别:GROUPCREATE USER。级别:GLOBALALTER USER。级别:GLOBALDROP USER。级别:GLOBALCREATE ROLE。级别:GLOBALALTER ROLE。级别:GLOBALDROP ROLE。级别:GLOBALROLE ADMIN。级别:GLOBALCREATE ROW POLICY。级别:GLOBAL。别名:CREATE POLICYALTER ROW POLICY。级别:GLOBAL。别名:ALTER POLICYDROP ROW POLICY。级别:GLOBAL。别名:DROP POLICYCREATE QUOTA。级别:GLOBALALTER QUOTA。级别:GLOBALDROP QUOTA。级别:GLOBALCREATE SETTINGS PROFILE。级别:GLOBAL。别名:CREATE PROFILEALTER SETTINGS PROFILE。级别:GLOBAL。别名:ALTER PROFILEDROP SETTINGS PROFILE。级别:GLOBAL。别名:DROP PROFILESHOW ACCESS。级别:GROUPSHOW_USERS。级别:GLOBAL。别名:SHOW CREATE USERSHOW_ROLES。级别:GLOBAL。别名:SHOW CREATE ROLESHOW_ROW_POLICIES。级别:GLOBAL。别名:SHOW POLICIES、SHOW CREATE ROW POLICY、SHOW CREATE POLICYSHOW_QUOTAS。级别:GLOBAL。别名:SHOW CREATE QUOTASHOW_SETTINGS_PROFILES。级别:GLOBAL。别名:SHOW PROFILES、SHOW CREATE SETTINGS PROFILE、SHOW CREATE PROFILE
ALLOW SQL SECURITY NONE。级别:GLOBAL。别名:CREATE SQL SECURITY NONE、SQL SECURITY NONE、SECURITY NONE
ROLE ADMIN 特权允许用户授予和撤销任何角色,包括未以 admin 选项授予该用户的角色。
SYSTEM
SYSTEM。级别:GROUPSYSTEM SHUTDOWN。级别:GLOBAL。别名:SYSTEM KILL,SHUTDOWNSYSTEM DROP CACHE。别名:DROP CACHESYSTEM DROP DNS CACHE。级别:GLOBAL。别名:SYSTEM CLEAR DNS CACHE,SYSTEM DROP DNS,DROP DNS CACHE,DROP DNSSYSTEM DROP MARK CACHE。级别:GLOBAL。别名:SYSTEM CLEAR MARK CACHE,SYSTEM DROP MARK,DROP MARK CACHE,DROP MARKSSYSTEM DROP UNCOMPRESSED CACHE。级别:GLOBAL。别名:SYSTEM CLEAR UNCOMPRESSED CACHE,SYSTEM DROP UNCOMPRESSED,DROP UNCOMPRESSED CACHE,DROP UNCOMPRESSED
SYSTEM RELOAD。级别:GROUPSYSTEM RELOAD CONFIG。级别:GLOBAL。别名:RELOAD CONFIGSYSTEM RELOAD DICTIONARY。级别:GLOBAL。别名:SYSTEM RELOAD DICTIONARIES,RELOAD DICTIONARY,RELOAD DICTIONARIESSYSTEM RELOAD EMBEDDED DICTIONARIES。级别:GLOBAL。别名:RELOAD EMBEDDED DICTIONARIES
SYSTEM MERGES。级别:TABLE。别名:SYSTEM STOP MERGES,SYSTEM START MERGES,STOP MERGES,START MERGESSYSTEM TTL MERGES。级别:TABLE。别名:SYSTEM STOP TTL MERGES,SYSTEM START TTL MERGES,STOP TTL MERGES,START TTL MERGESSYSTEM FETCHES。级别:TABLE。别名:SYSTEM STOP FETCHES,SYSTEM START FETCHES,STOP FETCHES,START FETCHESSYSTEM MOVES。级别:TABLE。别名:SYSTEM STOP MOVES,SYSTEM START MOVES,STOP MOVES,START MOVESSYSTEM SENDS。级别:GROUP。别名:SYSTEM STOP SENDS,SYSTEM START SENDS,STOP SENDS,START SENDSSYSTEM DISTRIBUTED SENDS。级别:TABLE。别名:SYSTEM STOP DISTRIBUTED SENDS,SYSTEM START DISTRIBUTED SENDS,STOP DISTRIBUTED SENDS,START DISTRIBUTED SENDSSYSTEM REPLICATED SENDS。级别:TABLE。别名:SYSTEM STOP REPLICATED SENDS,SYSTEM START REPLICATED SENDS,STOP REPLICATED SENDS,START REPLICATED SENDS
SYSTEM REPLICATION QUEUES。级别:TABLE。别名:SYSTEM STOP REPLICATION QUEUES,SYSTEM START REPLICATION QUEUES,STOP REPLICATION QUEUES,START REPLICATION QUEUESSYSTEM SYNC REPLICA。级别:TABLE。别名:SYNC REPLICASYSTEM RESTART REPLICA。级别:TABLE。别名:RESTART REPLICASYSTEM FLUSH。级别:GROUPSYSTEM FLUSH DISTRIBUTED。级别:TABLE。别名:FLUSH DISTRIBUTEDSYSTEM FLUSH LOGS。级别:GLOBAL。别名:FLUSH LOGS
SYSTEM RELOAD DICTIONARY ON *.* 特权会隐式授予 SYSTEM RELOAD EMBEDDED DICTIONARIES 特权。
INTROSPECTION
INTROSPECTION。级别:GROUP。别名:INTROSPECTION FUNCTIONSaddressToLine。级别:GLOBALaddressToLineWithInlines。级别:GLOBALaddressToSymbol。级别:GLOBALdemangle。级别:GLOBAL
SOURCES
READ。级别:GLOBAL_WITH_PARAMETERWRITE。级别:GLOBAL_WITH_PARAMETER
AZUREFILEHDFSHIVEJDBCKAFKAMONGOMYSQLNATSODBCPOSTGRESRABBITMQREDISREMOTES3SQLITEURL
从 25.7 版本开始,只有在启用服务器设置
access_control_improvements.enable_read_write_grants
时,才支持对数据源的 READ/WRITE 授权进行拆分。否则,应使用语法 GRANT AZURE ON *.* TO user,其等同于新的 GRANT READ, WRITE ON AZURE TO user- 要使用MySQL 表引擎创建表,你需要
CREATE TABLE (ON db.table_name)和MYSQL特权。 - 要使用mysql 表函数,你需要
CREATE TEMPORARY TABLE和MYSQL特权。
源过滤器授权
此功能自 25.8 版本起可用,且仅在启用服务器设置
access_control_improvements.enable_read_write_grants
时可用WITH GRANT OPTION,则可以使用 GRANT CURRENT GRANTS 再次授权:
- 不允许部分撤销: 你不能只撤销已授权过滤模式中的一部分。如有需要,必须先撤销整个授权,再使用新的模式重新授权。
- 不允许通配符授权: 你不能使用
GRANT READ ON *('regexp')或类似仅使用通配符的模式。必须指定具体的 source。
dictGet
dictGet。别名:dictHas、dictGetHierarchy、dictIsIn
DICTIONARY。
示例
GRANT dictGet ON mydb.mydictionary TO johnGRANT dictGet ON mydictionary TO john
displaySecretsInShowAndSelect
display_secrets_in_show_and_select 服务器设置
和
format_display_secrets_in_show_and_select 格式设置,
则允许用户在 SHOW 和 SELECT 查询中查看 secrets。
NAMED COLLECTION ADMIN
NAMED COLLECTION ADMIN。级别:NAMED_COLLECTION。别名:NAMED COLLECTION CONTROLCREATE NAMED COLLECTION。级别:NAMED_COLLECTIONDROP NAMED COLLECTION。级别:NAMED_COLLECTIONALTER NAMED COLLECTION。级别:NAMED_COLLECTIONSHOW NAMED COLLECTIONS。级别:NAMED_COLLECTION。别名:SHOW NAMED COLLECTIONSSHOW NAMED COLLECTIONS SECRETS。级别:NAMED_COLLECTION。别名:SHOW NAMED COLLECTIONS SECRETSNAMED COLLECTION。级别:NAMED_COLLECTION。别名:NAMED COLLECTION USAGE, USE NAMED COLLECTION
GRANT CREATE NAMED COLLECTION ON abc TO john
表引擎
GRANT TABLE ENGINE ON * TO johnGRANT TABLE ENGINE ON TinyLog TO john
默认情况下,出于向后兼容的考虑,使用特定表引擎创建表时会忽略授权检查;
不过,你可以通过在 config.xml 中将
table_engines_require_grant 设置为 true
来更改这一行为。READ/WRITE 权限。请参见 Sources。
例如,对于 AzureBlobStorage 表引擎,可能需要以下授权。
GRANT READ, WRITE ON AZURE TO john
ALL
ClickHouse Cloud 不支持
ALL 特权,其中 default 用户的权限受限。用户可以通过授予 default_role,向某个用户授予最大权限。更多详情请参见此处。
用户也可以使用 GRANT CURRENT GRANTS,并以 default 用户身份执行,以获得与 ALL 类似的效果。NONE
ADMIN OPTION
ADMIN OPTION 特权允许用户将自己的角色授予其他用户。