Mysql高级篇学习总结3:角色管理、配置文件的使用
- 1、角色管理
-
- 1.1 角色的理解
- 1.2 创建角色
- 1.3 给角色赋予权限
- 1.4 查看角色权限
- 1.5 回收角色权限
- 1.6 删除角色
- 1.7 给用户赋予角色
- 1.8 激活角色
- 1.9 撤销用户的角色
- 1.10 设置强制角色
- 2、配置文件的使用
-
- 2.1 配置文件格式
- 2.2 启动命令与选项组
- 2.3 特定Mysql版本的专用选项组
- 2.4 同一配置文件中多个组的优先级
- 2.5 命令行和配置文件中启动选项的区别
1、角色管理 1.1 角色的理解 角色实在Mysql8.0版本中引入的新功能。角色是权限的集合,可以为角色添加或移除权限。用户可以被赋予角色,同事也被授予角色包含的权限。对角色进行操作需要较高的权限。
引入角色的目的是方便管理拥有相同权限的用户。恰当的权限设定,可以确保数据的安全性,这是至关重要的。
1.2 创建角色 在实际应用中,为了安全性,需要给用户授予权限。当户数量较多时,为了避免单独给每一个用户授予多个权限,可以先将权限集合放入角色中,再赋予用户响应的角色。
创建角色使用CREATE ROLE语句,语法如下:
CREATE ROLE 'role_name'[@'host_name']
角色名称的命名规则和用户名类似。如果host_name省略,默认为%,role_name不能省略。
举例:
# 创建一个经理的角色
CREATE ROLE 'manager'@'localhost';
# 创建一个库管角色
CREATE ROLE 'stocker';
# 同时创建多个角色
CREATE ROLE 'app_developer', 'app_read', 'app_write';
1.3 给角色赋予权限 创建角色之后,默认这个角色是没有任何权限的,我们需要给角色授权。给角色授权的语法结构是:
GRANT privileges ON table_name TO 'role_name'[@'host_name'];
举例:
# 给经理角色授予商品信息表的只读权限
GRANT SELECT ON demo.setlement TO 'manager';
# 给库管员角色赋予盘点表的增删改查权限
GRANT SELECT, INSERT, DELETE, UPDATE ON demo.invcount TO 'stocker';
# 给经理角色赋予对员工数据库中所有表进行任何操作的权限
GRANT ALL PRIVILEGES ON employees.* TO 'manager';
1.4 查看角色权限 赋予角色权限之后,可以通过SHOW GRANTS语句查看权限是否创建成功:
SHOW GRANTS FOR 'manager';
1.5 回收角色权限 角色授权后,可以对角色的权限进行维护,对权限进行添加或撤销。添加权限使用GRANT语句,与角色授权相同,撤销角色或角色权限使用REVOKE语句。
撤销角色权限的SQL语法如下:
REVOKE privileges ON tablename FROM 'rolename';
举例:
# 撤销库管员角色对盘点表的增加,更新,删除权限
REVOKE INSERT, UPDATE, DELETE ON demo.invcount FROM 'stocker';
1.6 删除角色 删除角色的语法如下:
DROP ROLE role;
举例:
# 删除经理角色
DROP ROLE 'manager';
1.7 给用户赋予角色 角色创建并授权后,要赋给用户并处于激活状态才能发挥作用。给用户添加角色可使用GRANT语句,语法形式如下:
GRANT role TO user;
举例:
# 给zhangsan赋予经理角色
GRANT 'manager' TO 'zhangsan'@'localhost';
添加完成后,可以使用SHOW GRANTS FOR 语句查看是否添加成功:
SHOW GRANTS FOR 'zhangsan'@'localhost';
使用zhangsan用户登录,然后查询当前角色,如果角色未激活,结果将显示NONE:
SELECT CURRENT_ROLE();
如果当前用户已经赋予角色了,但是角色显示NONE,是因为mysql默认角色都是没有被激活,也就是无法使用,必须手动激活角色。
1.8 激活角色 方式1:使用SET DEFAULT ROLE命令激活角色
举例:
# 给zhangsan默认激活其已拥有的角色
SET DEFAULT ROLE ALL TO 'zhangsan'@'localhost';
方式2:将activate_all_roles_on_login设置为ON
SET GLOBAL activate_all_roles_on_login=ON;
这条语句是对所有角色进行永久激活。
1.9 撤销用户的角色 撤销用户角色的sql语法如下:
REVOKE role FROM user;
举例:
REVOKE 'manager' FROM 'zhangsan'@'localhost';
1.10 设置强制角色 强制角色是给每个创建账户的默认角色,不需要手动设置。强制角色无法被REVOKE或者DROP。
方式1:服务启动前设置
[mysqld]
mandatory_roles='role1,role2@sqllocalhost,role3@%'
方式2:运行时设置
# 系统重启后仍然有效
SET PERSIST mandatory_roles = 'role1,role2@sqllocalhost,role3@%';
# 系统重启后失效
SET GLOBAL mandatory_roles = 'role1,role2@sqllocalhost,role3@%';
2、配置文件的使用 2.1 配置文件格式 与在命令行中指定启动选型不同的是,配置文件中的启动选项被划分为若干个组,每个组有一个组名,用中括号[]括起来,举例如下:
[server]
(具体的启动选项...)[mysqld]
(具体的启动选项...)[mysqld_safe]
(具体的启动选项...)[client]
(具体的启动选项...)[mysql]
(具体的启动选项...)[mysqladmin]
(具体的启动选项...)
2.2 启动命令与选项组 配置文件中不同的选项组是给不同的启动命令使用的,不过有两个选项组比较特别:
- [server]组下边的启动选项将作用于所有的服务器程序。
- [client]组下边的启动选项将作用于所有的客户端程序。
启动命令 | 类别 | 能读取的组 |
---|---|---|
mysqld | 启动服务器 | [mysql]、[server] |
mysqld_safe | 启动服务器 | [mysql]、[server]、[mysqld_safe] |
mysql.server | 启动服务器 | [mysql]、[server]、[mysql.server] |
mysql | 启动客户端 | [mysql]、[client] |
mysqladmin | 启动客户端 | [mysqladmin]、[client] |
mysqldump | 启动客户端 | [mysqldump]、[client] |
[server]
skip-networking
default-storage-engine=MyISAM
然后直接用mysqld启动服务器程序:
mysqld
虽然在命令行没有添加启动选项,但是在程序启动的时候,就会默认地到上边提到的配置文件路径下查找配置文件,其中就包括/etc/mysql/my.cnf。又由于mysqld命令可以读取[server]选项组的内容,所以skip-networking
和default-storage-engin这2个选项是生效的。
2.3 特定Mysql版本的专用选项组 可以在选型组的名称后加上特定的Mysql版本号,比如对于[mysqld]选项组来说,我们可以定义一个[mysqld-5.7]的选项组,它的含义和[mysqld]一样,只不过只有版本号为5.7的mysqld程序才能使用这个选项组中的选项。
2.4 同一配置文件中多个组的优先级 同一个命令可以访问配置文件中的多个组,比如mysqld可以访问[mysqld]、[server]组,如果在同一个配置文件中出现了同样的配置项,那么将会以最后一个出现的组中的启动项为准。例如下例中,会以[mysqld]组中的配置项为准。
[server]
default-storage-engine=MyISAM[mysqld]
default-storage-engine=InnoDB
2.5 命令行和配置文件中启动选项的区别 如果同一个启动选项既出现在命令行中,又出现在配置文件中,那么就以命令行中的启动选项为准!比如在配置文件中谢了:
[server]
default-storage-engine=MyISAM
而启动命令是:
mysql.server start --default-storage-engine=InnoDB
【数据库|Mysql高级篇学习总结3(角色管理、配置文件的使用)】那么最后default-storage-engine的值就是:InnoDB。
推荐阅读
- MySQL|基础查询语句
- 面试|2022年MySQL最新面试题,是否可以登上你的客船()
- WordPress(从小部件代码访问数据库)
- mysql|MySQL性能优化21个最佳实践,一个一个分解给你看,还怕搞不定()
- 在不创建新表的情况下为WordPress插件存储变量
- 在WordPress中使用MySQL查询检索小部件数据
- 数据库|数据库系统概论笔记
- 数据库学习|数据库系统概论学习笔记——数据完整性
- 数据库系统概论|[数据库系统概论学习笔记]3.关系