mysql的用戶權限設置


一、首先我們需要來看一下mysql默認數據庫里面的四張表(user,db,tables_priv,columns_priv)。

1、user表(用戶層權限)

 

因為字段太多,只截取了一部分。首先登陸的時候驗證Host,User,Password也就是ip,用戶名,密碼是否匹配,匹配登陸成功將會為登陸者分配權限,分配權限的順序也是按照上面四張表的排列順序進行的,舉個例子,如果user表的Select_priv為Y說明他擁有所有表的查找權限,如果為N就需要到下一級db表中進行權限分配了。其中的%是通配符,代表任意的意思。

2、db表(數據庫層權限)

 

來到db表之后會匹配Host,User然后會根據Db字段對應的表進行權限分配,像Select_priv這些字段對應的權限大家應該都能看出來是對應着什么權限了吧,這里不細說了(不偷懶,舉個例子Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv分別代表着查詢,增加,更新,刪除,創建,銷毀)。其中Y代表這擁有此項權限,N則代表沒有此項權限。

3、tables_priv表(表層權限)

 

與上面一樣,這是通過Host,Db,User,Table來進行定位到表層的一個權限分配。不過它只有Table_priv和Column_priv兩個字段來記錄權限。

4、columns_priv表(字段層權限)

 

顧名思義,字段層權限,通過Host,Db,User,Table,Column來進行定位到字段層的一個權限分配,只有Column_priv來記錄權限。

二、使用grant命令來分配權限

大致格式:grant 權限 on 數據庫對象 to 用戶 identified by 密碼

我們通過兩條命令來解讀下:

grant all on test.* to 'root'@'%' identified by '123456' with grant option; 

上面這條命令的意思是給root@%這個用戶對應的test數據庫分配所有操作權限,identified by是需要進行的一個密碼認證。把all換成USAGE就表示這個用戶除了登陸啥都干不了。

grant select, insert, update, delete on test.* to 'root'@'%' identified by '123456' with grant option; 

上面這條命令則是給root@%這個用戶對應的test數據庫分配了增刪改查的操作權限。

 

查看某個用戶的權限:show grants for 'root'@'%'; 

 

查看當前用戶: SELECT CURRENT_USER();
---------------------
版權聲明:本文為CSDN博主「程序員阿坤」的原創文章,遵循CC 4.0 by-sa版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/kkkun_joe/article/details/81023427

 


免責聲明!

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



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