MySQL 目录
1、MySQL 8.0 引擎和索引
2、MySQL 8.0 查询数据
3、MySQL 8.0 操作数据库和数据表
4、Mysql 8.0 权限概述与授权(一)
5、Mysql 8.0 权限概述与授权(二)
6、Mysql 8.0 权限概述与授权(三)
7、持续更新中…
Mysql 8.0 权限概述与授权(一)
导读:
MySQL 是一个多用户数据库,具有功能强大的访问控制系统,可以为不同用户指定允许的权限。MySQL 用户可以分为普通用户和 root 用户。root 用户是超级管理员,拥有所有权限。
权限表
MySQL 服务器通过权限表来控制用户对数据库的访问,权限表存放在MySQL 数据库中,由 mysql_install_db 脚本初始化。
user 表 —是MySQL 中最重要的一个权限表,记录允许连接到服务器的账号信息,里面的权限是全局性的。可以分为四类,分别是用户列,权限列,安全列和资源控制列。
用户列
包括 Host 、User 、authentication_string, 分别表示主机名、用户名和密码。
修改用户密码时,实际就是修改 user 表的 authentication_string 字段的值。
2.权限列
权限列的字段决定了用户的权限,描述了在全局范围内允许对数据和数据库进行的操作,包括查询权限、修改权限等普通权限,还包括关闭服务器、超级权限和加载用户等高级权限。
3.安全列
安全列只有6个字段,其中两个是ssl 相关的,两个是 x509 相关的,另外两个是授权插件相关的。ssl 用于加密; x509 标准可用于标识用户; Plugin 字段表示可以用于验证用户身份的插件,如果该字段为空,服务器就使用内建授权验证机制验证用户身份。
4.资源控制列
资源控制列的字段用来限制用户使用的资源,包含4个字段,分别为
1> max_questions # 用户每小时允许执行的查询操作次数
2> max_updates # 用户每小时允许执行的更新操作次数
3> max_connections # 用户每小时允许执行的连接操作次数
4> max_user_connections # 用户允许同时建立的连接次数
db 表
—存储了用户对某个数据库的操作权限,决定用户能从哪个主机存取哪个数据库。
1、用户列: db表用户列有三个字段,分别是Host、User、Db, 表示从某个主机连接某个用户对某个数据库的操作权限,这三个字段的组合构成了db 表的主键。
2、权限列: db 表中的 create_routine_priv 和 alter_routine_priv 两个字段表明用户是否创建和修改存储过程的权限。
tables_priv表 和 columns_priv 表
tables_priv表用来对表设置操作权限,columns_priv 表用来对表的某一列设置权限。
tables_priv表
columns_priv 表
注释:
(1) Host、Db、User 和 Table_name 4个字段分别表示主机名、数据库名、用户名和表名
(2) Grantor 表示修改该记录的用户
(3) Timestamp 字段表示修改该记录的时间
(4) Table_name 表示对表的操作权限。
(5) Column_priv 字段表示对表中的列的操作权限
procs_priv 表
procs_priv 表可以对存储过程和存储函数设置操作权限。
其他参数 :与上文一致
(1)Routine_name 表示存储过程或函数的名称
(2)Routine_type 表示存储过程或函数的类型。Routine_type 字段有两个值,分别是FUNCTION 和 PROCEDURE 。FUNCTION 表示这是一个函数,PROCEDURE 表示这是一个存储过程。
(3)Proc_priv 表示拥有的权限,包括Execute 、Alter Routine、Grant 三种。