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;

  

作者:朱敬志

-------------------------------------------

个性签名:在逆境中要看到生活的美,在希望中别忘记不断奋斗

如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!

万水千山总是情,打赏一分行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主,哈哈哈(っ•̀ω•́)っ✎⁾⁾!

支付宝 微信

也可以关注我的微信公众号,不定时更新技术文章(kubernetes,Devops,Python)等

微信公众号
原文地址:https://www.cnblogs.com/zhujingzhi/p/9627903.html