持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第6天,点击查看活动详情
前言
上篇我们学习完了MySQL中的权限管理。有兴趣的小伙伴可以阅读(# MySQL学习-权限管理(四))。
下面我们继续学习MySQL中的角色管理。
角色管理
为什么有角色,目的是为了方便管理拥有相同权限的用户。恰当的权限设定,可以确保数据的安全性。
创建角色
创建角色使用CREATE ROLE语句。语法如下:
CREATE ROLE 'role_name'[@'host_name'] [,'role_name'[@'host_name']]...
角色名称的命名规则和用户名类似。其中host_name省略,默认为%,role_name不可以省略,不可以为空。
创建一个管理员角色:
CREATE ROLE 'manager'@'localhost';
给角色赋予权限
创建角色后,默认这个角色没有任何权限,我们需要给角色授权。语法如下:
GRANT provoleges ON table_name TO 'role_name'[@'host_name'];
举例一
给管理员授予商品信息表的只读权限。
GRANT SELECT ON demo.goodsmaster TO 'manager';
查看角色的权限
给角色赋予权限后,可以通过SHOW GRANTS语句,来查看权限是否创建成功。
SHOW GRANTS FOR 'manager';
使用以上语句,可以查看以下结果:
| GRANTS FOR manager@% |
|---|
| GRANT USAGE ON . TO 'manager'@'%' |
| GRANT USAGE ON 'demo'.'goodsmaster' TO 'manager'@'%' |
其中第二行结果,就是我们刚刚给角色manager赋予的权限,也就是对商品信息表的只读权限。除了我们赋予的权限,从结果中可以看出还有一个权限,这是在创建一个角色时,系统会默认给赋予一个USAGE权限,意思是连接登录数据库的权限。
回收角色的权限
角色授权后,可以对角色的权限进行维护。对权限进行添加或撤销。添加权限使用GRANT语句,与角色授权相同。撤销角色或角色权限使用REVOKE语句。语法如下:
REVOKE privileges ON tablename FROM 'rolename';
举例二
撤销manager的商品信息表的只读权限。
REVOKE SELECT ON demo.goodsmaster FROM 'manager';
删除角色
删除角色的语法如下:
DROP ROLE role1 [,role2]...
如果删除了一个角色,那么用户也就失去了通过这个角色获得的所有权限。
举例三
删除角色manager。
DROP ROLE 'manager';
今天先学习到这里,明天继续。