Bootstrap

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;

;