GRANT 简介
GRANT语句可以用于进行授权和设置角色,需要有 GRANT OPTION 权限或 mysql 系统表的 UPDATE 权限。
不能在一个GRANT语句中同时进行授权和设置角色。GRANT语句使用ON
子句区分是进行授权还是设置角色。
- 有
ON
子句则为授权。 - 没有
ON
子句则为设置角色。
基础语法
GRANT ALL ON db1.* TO 'jeffrey'@'localhost';
GRANT 'role1', 'role2' TO 'user1'@'localhost', 'user2'@'localhost';
GRANT SELECT ON world.* TO 'role3';
全局权限
适用于所有数据库,全局权限存储在 mysql.user
系统表中。
GRANT ALL ON *.* TO 'someuser'@'somehost';
GRANT SELECT, INSERT ON *.* TO 'someuser'@'somehost';
数据库权限
适用于给定数据库中的所有对象,数据库权限存储在 mysql.db
系统表中。
GRANT ALL ON mydb.* TO 'someuser'@'somehost';
GRANT SELECT, INSERT ON mydb.* TO 'someuser'@'somehost';
表权限
适用于给定表中的所有列,表权限存储在 mysql.tables_priv
系统表中。
GRANT ALL ON mydb.mytbl TO 'someuser'@'somehost';
GRANT SELECT, INSERT ON mydb.mytbl TO 'someuser'@'somehost';
列权限
适用于给定表中的单个列,列权限存储在 mysql.columns_priv
系统表中。
GRANT SELECT (col1), INSERT (col1, col2) ON mydb.mytbl TO 'someuser'@'somehost';
存储过程权限
略
代理用户权限
略
设置角色
GRANT 'role1', 'role2' TO 'user1'@'localhost', 'user2'@'localhost';
查看用户权限
mysql> SHOW GRANTS FOR 'someuser'@'somehost';
+-------------------------------------------------------+
| Grants for admin@localhost |
+-------------------------------------------------------+
| GRANT RELOAD, PROCESS ON *.* TO 'someuser'@'somehost' |
+-------------------------------------------------------+
查看用户
mysql> SET print_identified_with_as_hex = ON;
mysql> SHOW CREATE USER 'admin'@'localhost'\G
*************************** 1. row ***************************
CREATE USER for admin@localhost: CREATE USER 'admin'@'localhost'
IDENTIFIED WITH 'caching_sha2_password'
AS 0x24412430303524301D0E17054E2241362B1419313C3E44326F294133734B30792F436E77764270373039612E32445250786D43594F45354532324B6169794F47457852796E32
REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK
PASSWORD HISTORY DEFAULT
PASSWORD REUSE INTERVAL DEFAULT
PASSWORD REQUIRE CURRENT DEFAULT
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。