用户与权限管理
目录
3.3 tables_priv表和columns_priv表
4. 访问控制(了解)(第3点和第4点是第1、2点底层实现的原理)
1.用户管理
1.1 登录MySQL服务器
1.2 创建用户
1.3 修改用户
1.4 删除用户(很少用到)
修改user里面的字段名字
1.5 设置当前用户密码
1.6 修改其它用户密码
1.7MySQL8密码管理(了解)
2. 权限管理
新创建的用户如果没有指定,那么默认只有一个表可以用。企业相关数据的数据库和表中DML权限都没有(为什么要什么要赋予权限,如果只是用root用户,可能会导致数据库暴露)
2.1 权限列表
过程是存储过程
2.2 授予权限的原则
2.3 授予权限
在root用户下赋予权限。
root用户将授予所有权限给某一个用户,这个用户和root用户的区别在于,root用户能够赋予别人权限,但用户不行,除非再加上"WITH GRANT OPTION" 。
2.4 查看权限
2.5 收回权限
3. 权限表
MySQL服务器通过权限表来控制用户对数据库的访问,权限表存放在mysql数据库(这里的mysql是数据库中的名字为mysql的数据库)中。MySQL数据库系统会根据这些权限表的内容为每个用户赋予相应的权限。这些权限表中最重要的是user表、db表。除此之外,还有tables_priv表、columns_priv表和procs_priv表等。在MySQL启动时,服务器将这些数据库表中权限信息的内容读入内存。
3.1 user表
这些字段可以分成4类,分别是范围列(或用户列)、权限列、安全列和资源控制列。
3.2 db表
db表体现的是某一个用户对于某一个数据库的相关操作权限。
由Host和Db和User三个作为一个唯一主键。
3.3 tables_priv表和columns_priv表
tables_priv表 关于具体的某一个表的相关权限。(由四个组成一个联合主键,如上)
columns_priv表 关于具体某一个字段(某一列)的相关权限。(由五个组成一个联合主键,如上)
3.4 procs_priv表
procs_priv表中包含8个字段,分别是Host、Db、User、Routine_name、Routine_type、Grantor、Proc_priv、Timestamp,各字段的说明如下:
- Host、Db和User字段分别表示主机名、数据库名和用户名。
- Routine_name表示存储过程或函数的过程。
- Routine_type表示存储过程或函数的类型。Routine_type字段有两个值,分别是FUNTION和PROCEDURE:FUNCTION表示这是一个存储函数,PROCEDURE表示这是一个存储过程。
- Grantor是插入或修改该记录的用户。
- Proc_priv表示拥有的权限,包括Execute、Alter Routine、Grant三种(表结构中有显示出来)
- Timestamp表示记录更新的时间。
4. 访问控制(了解)(第3点和第4点是第1、2点底层实现的原理)
4.1 连接核实阶段
4.2 请求核实阶段
一般也只是到表级别的权限,很少会到列级别。
5. 角色管理
5.1 角色的理解
5.2 创建角色
5.3 给角色赋予权限
5.4 查看角色的权限
5.5 回收角色的权限
5.6 删除角色
5.7 给用户赋予角色
上面结果是NONE,说明用户未具备相应的角色。
或者你用赋予了角色的用户去登录、操作,你会发现,这个账号没有任何权限。这是因为MySQL中创建了角色之后,默认都是没有被激活,也就是不能用,必须要手动激活,激活以后用户才能拥有角色对应的权限。
5.8 激活角色
(这个参数是一个系统变量,也是一个会话变量)
5.9 撤销用户的角色
5.10 设置强制角色(mandatory role)
了解即可(一般很少设置这种角色)
5.11 小结