首页 > 编程笔记 > MySQL笔记 阅读:1

MySQL为角色授权(附带实例)

角色是在 MySQL 8.0 中引入的新功能,可以理解为权限的集合。用户可以被赋予角色,同时被授予角色包含的权限。

引入角色的目的是方便管理拥有相同权限的用户。恰当的权限设定可以确保数据库的安全性。在实际应用中,为了确保数据库的安全性,需要授予用户相应的权限。当用户数量较多时,为了避免单独授予每个用户多个权限,可以先将权限集合放入角色中,再赋予用户相应的角色。

新创建的角色默认是没有任何权限的,我们需要给角色授权。给角色授权的命令语法如下所示。
mysql> GRANT privileges ON table_name TO 'role_name'[@'host_name'];

其中,privileges 代表权限名,多个权限之间用逗号分隔。可以使用 SHOW 语句查看权限名,如下所示:
mysql> SHOW privileges\G;

例如,我们想授予角色 student 对图书表(book表)、试卷表(test_paper表)和班级表(class表)的只读权限,就可以使用如下 SQL 语句实现:
#授予角色student对图书表的只读权限
mysql> GRANT SELECT ON demo.book TO 'student';
#授予角色student对试卷表的只读权限
mysql> GRANT SELECT ON demo.test_paper TO 'student';
#授予角色student对班级表的只读权限
mysql> GRANT SELECT ON demo.class TO 'student';

如果我们想授予角色 teacher 对试卷表的增、删、改、查权限和对图书表的只读权限,对班级表没有操作权限,则可以使用如下 SQL 语句实现:
#授予角色teacher对试卷表的增、删、改、查权限
mysql> GRANT SELECT,INSERT,DELETE,UPDATE ON demo.test_paper TO 'teacher';
#授予角色teacher对图书表的只读权限
mysql> GRANT SELECT ON demo.book TO 'teacher';
#对班级表没有操作权限,无须设置

再举一个例子,要求如下:
具体实现如下所示:
#授予开发人员对demo数据库中所有表的所有权限
mysql> GRANT ALL PRIVILEGES ON demo.* TO 'app_developer';
#授予产品人员对demo数据库中所有表的查询权限
mysql> GRANT SELECT ON demo.* TO 'app_product';
#授予测试人员对demo数据库中所有表的修改权限
mysql> GRANT INSERT, UPDATE, DELETE ON demo.* TO 'app_test';

相关文章