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;

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM