mysql权限机制2
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql权限机制2相关的知识,希望对你有一定的参考价值。
权限控制机制
四张表:user db tables_priv columns_priv privilege特权
mysql<select from userG
mysql<select from dbG
mysql<select from tables_privG
mysql<select * from columns_privG
1.用户认证
查看mysql.user表
2.权限认证
以select权限为例:
先看 user表里的select_priv权限
Y 不会接着查看其他的表 拥有查看所有库所有表的权限
N 接着看db表
db
Y 不会接着查看其他的表 拥有查看所有库所有表的权限
N 接着看tables_priv表
tables_priv
table_priv: 如果这个字段的值里包括select 拥有查看这张表所有
字段的权限,不会再接着往下看了
table_priv:如果这个字段的值里不包括select,接着查看下张表
还需要有column_priv字段权限
columns_priv
column_priv: 有select,则只对某一列有select权限
没有则对所有库所有表没有任何权限
db:
mysql> insert into db(host,db,user,Select_priv) values("10.18.44.%",‘data‘,‘ying‘,‘Y‘);
tables_priv:
mysql> insert into tables_priv(host,db,user,table_name,table_priv) values(‘10.18.44.%‘,‘data‘,‘ying‘,‘t1‘,‘Select,insert‘);
columns_priv:
mysql> insert into columns_priv(host,db,user,table_name,column_name,column_priv) values(‘10.18.44.%‘,‘data‘,‘ying‘,‘t1‘,‘id‘,‘select‘);
host,db,user,Select_priv
host,db,user,table_name,table_priv
host,db,user,table_name,column_name,column_priv
刷新权限:两种方式
修改表之后需要刷新权限
方式1:
mysql > flush privileges;
方式2:
mysqladmin flush-privileges -u root -p1
五表联动(5.7取消了host表)
user表
登录认证:用户能否进mysql查看user
权限认证:如果能进,看user表的权限有没有,没有就看下一个db表,db表没有看tables_priv,tables_priv没有就去看columns_priv
当db表的host字段为空的时候才会用到host表
db或者host 任何一个select是N,都是没权限
使用命令授权:grant
也可创建新账户(不过后面的版本会移除这个功能,建议使用create user)
语法格式:
grant 权限列表 on 库名.表名 to ‘用户名‘@‘客户端主机‘ [identified by ‘密码‘ with option参数];
==权限列表 all 所有权限(不包括授权权限)
select,update
select(col1), insert(col1,col2) Column level
==数据库.表名 *.* 所有库下的所有表 Global level
web.* web库下的所有表 Database level
web.stu_info web库下的stu_info表 Table level
==客户端主机 % 所有主机
192.168.2.% 192.168.2.0网段的所有主机
192.168.2.168 指定主机
localhost 指定主机
with_option参数
GRANT OPTION: 授权选项
MAX_QUERIES_PER_HOUR: 定义每小时允许执行的查询数
MAX_UPDATES_PER_HOUR: 定义每小时允许执行的更新数
MAX_CONNECTIONS_PER_HOUR: 定义每小时可以建立的连接数
MAX_USER_CONNECTIONS: 定义单个用户同时可以建立的连接数
mysql> grant select(id),insert(id) on wing.t1 to ‘xiaowu‘@‘172.16.70.%‘ identified by ‘123‘;
mysql> grant select,insert on wing.t1 to ‘xiaowu‘@‘172.16.70.%‘ identified by ‘123‘;
mysql> grant all on wing.t1 to ‘xiaowu‘@‘172.16.70.%‘ identified by ‘123‘;
mysql> grant all on . to ‘xiaowu‘@‘172.16.70.%‘ identified by ‘123‘;
mysql> grant all on . to ‘xiaowu‘@‘172.16.70.%‘ ;
mysql> grant all on . to ‘xiaowu‘@‘%‘;
查看权限
看自己的权限:
SHOW GRANTSG
看别人的权限:
SHOW GRANTS FOR [email protected]‘%‘G
撤销权限:revoke
语法:
REVOKE 权限列表 ON 数据库名 FROM 用户名@‘客户端主机’
mysql> revoke all on *.* from ‘xiaowu‘@‘%‘;
mysql> revoke delete on *.* from [email protected]’%’; //回收部分权限
REVOKE ALL PRIVILEGES ON *.* FROM [email protected]’%’; //回收所有权限
REVOKE ALL PRIVILEGES,GRANT OPTION ON *.* FROM ‘admin2‘@‘%‘;
以上是关于mysql权限机制2的主要内容,如果未能解决你的问题,请参考以下文章
14.VisualVM使用详解15.VisualVM堆查看器使用的内存不足19.class文件--文件结构--魔数20.文件结构--常量池21.文件结构访问标志(2个字节)22.类加载机制概(代码片段