MySQL GRANT:赋予用户角色(附带实例)
创建角色并授予角色权限后,要把角色赋予用户并使其处于激活状态才能发挥作用。
MySQL 中,赋予用户角色可以使用 GRANT 语句,其语法如下所示:
例如,赋予 zhang3 用户角色 student,具体操作步骤如下。
1) 使用 GRANT 语句赋予 zhang3 用户角色 student,SQL 语句如下所示:
2) 使用 SHOW 语句查看赋予用户角色是否成功,SQL 语句如下所示:
3) 使用 zhang3 用户登录数据库,查看当前角色,SQL 语句如下所示:
MySQL 中,赋予用户角色可以使用 GRANT 语句,其语法如下所示:
GRANT role1 [, role2, ...] TO user1 [, user2, ...];在上述语句中,role 代表角色,user 代表用户。可将多个角色同时赋予多个用户,用逗号分隔即可。
例如,赋予 zhang3 用户角色 student,具体操作步骤如下。
1) 使用 GRANT 语句赋予 zhang3 用户角色 student,SQL 语句如下所示:
mysql> GRANT 'student' TO 'zhang3'@'%';
2) 使用 SHOW 语句查看赋予用户角色是否成功,SQL 语句如下所示:
mysql> SHOW GRANTS FOR 'zhang3'@'%'; +------------------------------------------------------------------+ | Grants for zhang3@% | +------------------------------------------------------------------+ | GRANT USAGE ON *.* TO 'zhang3'@'%' | | GRANT SELECT, INSERT, UPDATE, DELETE ON `demo`.* TO 'zhang3'@'%' | | GRANT ALL PRIVILEGES ON `demo`.`test` TO 'zhang3'@'%' | | GRANT 'student'@'%' TO 'zhang3'@'%' | +------------------------------------------------------------------+ 4 rows in set (0.00 sec)从结果中可以看到,zhang3 用户已经被赋予了角色 student,但还不能使用角色 student 拥有的权限,因为此时还未激活角色 student。
3) 使用 zhang3 用户登录数据库,查看当前角色,SQL 语句如下所示:
SELECT CURRENT_ROLE();结果如下所示:
mysql> SELECT CURRENT_ROLE(); +----------------+ | CURRENT_ROLE() | +----------------+ | NONE | +----------------+ 1 row in set (0.00 sec)上述结果显示 NONE,说明 zhang3 用户没有被赋予相应的角色。或者使用被赋予角色的用户去登录、操作数据库,这时候会发现该用户没有任何操作权限。这是因为在 MySQL 中创建角色后,默认角色没有被激活,也就是不能使用,只有手动激活角色后,用户才能拥有该角色对应的权限。