MySQL系列—6.权限管理

目录

1、MySQL用户权限层级

2、权限

3、MySQL访问控制

4、权限表字段详解

5、用户权限收回


1、MySQL用户权限层级

全局权限:对单个MySQL实例有所有库表的访问权限

复制代码
# *.* 表示数据库库的所有库和表,ALL对应所有权限,存储在mysql.user表中

GRANT ALL ON *.* TO 'user'@'host';

数据库层级,这些权限存储在mysql.db表 中

复制代码
#对 test库下的所有具有所有权限

GRANT ALL ON test.* TO 'user'@'host'; 

表层级,存储 mysql.tables_priv表中

复制代码
#对mydb库的mytable表具有所有权 限

GRANT ALL ON mydb.mytable TO 'user'@'host'; 

列层级,,这些权限存储在mysql.columns_priv表 中

复制代码
# test数据库下的mytable表的columne列col1, col2, col3具有所有权限,很少使用

GRANT ALL (col1, col2, col3) ON test.mytable TO 'dbmadin'@'127.0.0.1';

grant select(id,name),update(age) on test.mytable to 'dbmadin'@'localhost';

2、权限

静态权限

数据权限:select,insert,update,DELETE,File

管理权限:CREATE,alter,INDEX,DROP,SHOW VIEW

3、MySQL访问控制

MySQL权限控制主要是集中在5张表中,user,db,tables_priv,columns_priv,procs_priv每次启 动会直接加载到内存中

用户连接检查阶段

a. 用户连接时,MySQ server首先从user表里匹配host, user, password,匹配不到则拒绝 Mysql client的连接

b. check mysql.user表的max_connections和max_user_connections,如果超过上限则拒 绝连接

c. check user表的SSL安全连接,配置SSL,检查用户证书

d. 三个检查通过,MySQL server端与MySQL client端建立connection,连接建立后,当用 户执行SQL语句时,执行SQL语句检查。

e.执行SQL语句时的检查,依次检查user表、db表、tables_priv, columns_priv, procs_priv表里查看是否具有相应权限

4、权限表字段详解

用户拥有服务器中所有数据库的select权限,user表中的Select_priv列为Y

用户单单只拥有某个一数据库的select权限那么user表中的Select_priv为N

如果授予一个用户单独某个数据库的权限,就会在db表中记录一条相关信息

5、用户权限收回

使用REVOKE收回权限之后,用户帐户的记录将从db、host、tables_priv、columns_priv表 中删除

复制代码
# 移除saos_test用户对于ab.*的权限;

Mysql> revoke all on ab.* from 'xxxxx'@'%';

# 刷新授权表;

Mysql> flush privileges;
相关推荐
何以解忧,唯有..37 分钟前
数据库索引失效的常见情况与优化策略
数据库·sql·oracle
这个DBA有点耶1 小时前
分布式数据库到底该不该上?从判断标准到架构选型的实战思考
数据库·架构·dba
01_ice2 小时前
MySQL库和表的操作
数据库·mysql
布莱克6053 小时前
数据库索引分类:数据结构、物理存储与逻辑角度详解
数据结构·数据库
SelectDB3 小时前
DeepSeek Harness 接入 Litefuse:完善 Agent 可观测与评估能力
数据库
这个DBA有点耶4 小时前
从库延迟的“二次放大”效应:一次大事务,拖垮整个读写分离
数据库·mysql·架构
LearnYard4 小时前
自然语言驱动的数据图表生成:几款工具功能对比实践
数据库·百度·powerpoint
一个有温度的技术博主4 小时前
MySQL 三大日志协同机制:redo log、undo log 与 binlog 的联合运作
数据库·mysql·oracle
ltl5 小时前
ClickHouse 与 DuckDB 选型:不是同一类列存
数据库
ltl5 小时前
RocksDB WAL 与 WriteBatch:持久化与原子批写
数据库