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 0x24412430303524301D0E17054E2241362B1419313C3E44326F294133734B30792F436E77764270373039612E32445250786D43594F45354532324B6169794F47457852796E32REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCKPASSWORD HISTORY DEFAULTPASSWORD REUSE INTERVAL DEFAULTPASSWORD REQUIRE CURRENT DEFAULT