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)等