3、MySql用户与权限
2021-04-22 09:30:55 0 举报
AI智能生成
粗略了解
作者其他创作
大纲/内容
MySQL是一个多用户数据库,拥有功能强大的访问控制系统,可以为不同的用户指定不同的权限
MySQL如何认证一个用户?
MySQL用户认证
形式
用户名+主机
eg
test@127.0.0.1
test@192.168.10.10
这两个是不一样的用户
好比现实中的牛家村的张三和马家村的张三是分别两个人一样
权限分配
MySQL中的权限分配都是分配到用户+主机的实体上
MySQL用户
root用户
是超级管理员,拥有所有权限
普通用户
只拥有被授予的各种权限
MySQL的权限分哪几种及存储在什么地方?
MySQL的权限分类及存储
全局层级
全局权限适用于MySQL中的所有数据库
这些权限存储在mysql.user表中
grant all on *.* to 'user'@'host'
*.* 表示数据库的所有库和表
对应权限存储在mysql.user表中
数据库层级
数据库权限适用于一个给定数据库中的所有目标
这些权限存储在mysql.db表中
grant all on mydb.* to 'user'@'host';
mydb.* 表示mysql数据库下的所有表
对应权限存储在mysql.db表中
表层级
表权限适用于一个给定表中的所有列
这些权限存储在mysql.tables_priv表中
grant all on mydb.mytable to 'user'@'host'
mydb.mytable表示mysql数据库下的mytable表
对应权限存储在mysql.tables_priv表
列层级
列权限使用于一个给定表中的单一列
这些权限存储在mysql.columns_priv表中
grant all (col1,col2,col3) on mydb.mytable to 'user'@'host';
mydb.mytable表示mysql数据库下的mytable表
col1, col2,col3表示mytable表中的列名
子程序层级
create routine、alter routine、execute和grant权限适用于已存储的子程序
这些权限可以被授予为全局层级和数据库层级
除了create routine外,这些权限可以被授予子程序层级
并存储在mysql.procs_priv表中
grant execute on procedure mydb.myproc to 'user'@'host';
mydb.mytable 表示mysql数据库下的mytable表
procedure表示存储过程
MySQL如何控制用户访问的?
控制访问的方式
1、用户连接时的检查
1)当用户连接时,MySQL服务器首先从user表里匹配host, user, authentication_string,匹配不到则拒绝该连接;
2)接着检查user表的max_connections和max_user_connections,如果超过上限则拒绝连接;
3)检查user表的SSL安全连接,如果有配置SSL,则需确认用户提供的证书是否合法
2、执行SQL语句时的检查
1)从user表里检查max_questions和max_updates,如果超过上限则拒绝执行SQL
2)首先检查user表,看是否具有相应的全局性权限,如果有,则执行,没有则继续下一步检查
3)接着到db表,看是否具有数据库级别的权限,如果有,则执行,没有则继续下一步检查
4)最后到tables_priv, columns_priv, procs_priv表里查看是否具有相应对象的权限,MySQL检查权限非常复杂,为提高性能,MySQL的启动时就会把这5张权限表加载到内存
MySQL所有权限
user表
打开外部文件
权限
是基于服务器范围的所有权限
比如用户拥有服务器中所有数据库的select权限
那么,在user表中的Select_priv列为Y,如果用户只拥有某个一数据库的Select权限,那么user表中的Select_priv为N,会在DB表中记录一条信息在DB表中的Select_priv为Y
存放用户账户信息以及全局级别(所有数据库)权限,决定了来自哪些主机的哪些用户可以访问数据库实例,如果有全局权限则意味着对所有数据库都有此权限
详解
权限列
权限列决定了用户的权限
描述了用户在全局范围内允许对数据库和数据库表进行的操作
字段类型都是枚举Enum
值只能是Y或N
Y表示有权限
N表示没有权限
权限字段名称
安全列
资源控制列
语法
db表
打开文件
权限
如果授予一个用户单独某个数据库的权限,就会在db表中记录一条相关信息
存放数据库级别的权限,决定了来自哪些主机的哪些用户可以访问此数据库
语法
grant select,insert,update,delete,show view,execute on demo_db.* to 'oyj'@'localhost' identified by 'yydmmm';
tables_priv表
语法
columns_priv表
procs_priv表
0 条评论
下一页