天将降大任于是人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行拂乱其所为,所以动心忍性,曾益其所不能。

时间在流逝,在不正经就晚咯

MySQL权限管理(五)

一、什么是MySQL权限

  各大帖子及文章都会讲到数据库的权限按最小权限为原则,这句话本身没有错,但是却是一句空话。因为最小权限,这个东西太抽象,很多时候你并弄不清楚具体他需要哪些权限。 现在很多mysql用着root账户在操作,并不是大家不知道用root权限太大不安全,而是很多人并不知道该给予什么样的权限既安全又能保证正常运行。所以,本文更多的是考虑这种情况下,我们该如何简单的配置一个安全的mysql。

mysql中存在4个控制权限的表,分别为user表,db表,tables_priv表,columns_priv表。

mysql权限表的验证过程为:

  1.先从user表中的Host,User,Password这3个字段中判断连接的ip、用户名、密码是否存在,存在则通过验证。

  2.通过身份认证后,进行权限分配,按照user,db,tables_priv,columns_priv的顺序进行验证。即先检查全局权限表user,如果user中对应的权限为Y,则此用户对所有数据库的权限都为Y,将不再检查db, tables_priv,columns_priv;如果为N,则到db表中检查此用户对应的具体数据库,并得到db中为Y的权限;如果db中为N,则检查tables_priv中此数据库对应的具体表,取得表中的权限Y,以此类推。

二、MySQL具体的权限

三、数据库层面(db表)的权限分析及分配建议

 四、配置权限需要的SQL

查看用户的权限
show grants for brian@'localhost';

用户授权(两种方法)
1、创建用户然后授权
创建用户
help create user;
create user brian@'localhost' identified by '123456';
# 授权
help grant;
所有权限库的所有表
create user brian@'localhost' identified by '123456';
grant all on briandata.* to brian@'localhost';

2、一条命令授权
grant all on briandata.* to brian@'localhost' identified by '123456';

根据网段和IP进行授权
grant all on briandata.* to brian@'192.168.10.%' identified by '123456';
grant all on briandata.* to brian@'192.168.10.0/255.255.255.0' identified by '123456';


回收权限(revoke)
revoke insert on briandata.* from 'brian'@'localhost';

# 查看用户的权限(对应的权限会变成Y)
select * from mysql.user\G;

  

posted @ 2018-09-11 16:13  一本正经的搞事情  阅读(1808)  评论(0编辑  收藏  举报