Mysql學習筆記(十三)權限管理


學習內容:

1.權限管理:

關於mysql的權限簡單的理解就是mysql允許你做你權利以內的事情,不可以越界。比如只允許你執行select操作,那么你就不能執行update操作。只允許你從某台機器上連接mysql,那么你就不能從除那台機器以外的其他機器連接mysql。

那么MYSQL的權限是如何實現的呢?這就要說到mysql的兩階段的驗證:

第一階段:服務器首先會檢查你是否允許連接。因為創建用戶的時候會加上主機限制,可以限制成本地、某個IP、某個IP段、以及任何地方等,只允許你從配置的指定地方登錄。后面在實戰的時候會詳細說關於主機的限制。

第二階段:如果你能連接,MYSQL會檢查你發出的每個請求,看你是否有足夠的權限實施它。比如你要更新某個表、或者查詢某個表,MYSQL會檢查你對哪個表或者某個列是否有權限。再比如,你要運行某個存儲過程,MYSQL會檢查你對存儲過程是否有執行權限等。

mysql的權限:

官網上涉及mysql的權限有很多。。。。這里只是簡單的介紹一下分類。。。

權限分布 可能的設置的權限
表權限  'Select', 'Insert', 'Update', 'Delete', 'Create', 'Drop', 'Grant', 'References', 'Index', 'Alter'
列權限 'Select', 'Insert', 'Update', 'References'
過程權限 'Execute', 'Alter Routine', 'Grant'

 

 

 

 

 

 

最主要的還是mysql的兩個權限是如何驗證的。。。並且熟悉了mysql的權限是做什么的,那么這方面的知識就很容易理解了。。。

2.MYSQL權限經驗原則

權限控制主要是出於安全因素,因此需要遵循一下幾個經驗原則:

i.只授予能滿足需要的最小權限,比如用戶只是需要查詢,那就只給select權限就可以了,不要給用戶賦予update、insert或者delete權限。

ii.創建用戶的時候限制用戶的登錄主機,一般是限制成指定IP或者內網IP段。

iii.初始化數據庫的時候刪除沒有密碼的用戶。

iv.安裝完數據庫的時候會自動創建一些用戶,這些用戶默認沒有密碼。為每個用戶設置滿足密碼復雜度的密碼。

v.定期清理不需要的用戶。回收權限或者刪除用戶。

3.如何創建用戶呢?並且如何為用戶設置權限呢?

GRANT ALL PRIVILEGES ON *.* TO clearlove@'localhost' IDENTIFIED BY '49681888' WITH GRANT OPTION;

解釋一下上面語句的含義:

grant 關鍵字    all privileges 賦予所有權限   

*.*表示(數據庫.表格名)比如說我們想在samp數據庫里的shop表建立一個超級權限用戶,那么*.*就可以寫成 samp.shop

to 表示將權限賦予某個用戶。。

clearlove@'localhost'表示clearlove這個用戶@后面可以接ip,或者域名,這里接的是自己的主機...

identified by 表示為用戶設置一個登陸密碼為:49681888

with grant option 表示可以將自己的權限賦予給別人。。這句話尤其重要。。。

注:可以使用GRANT重復給用戶添加權限,權限疊加,比如你先給用戶添加了一個select權限,然后又給用戶添加了一個insert權限,那么該用戶就同時擁有了select和insert權限。

4.創建一個超級用戶

grant all privileges on samp_db.shop to clearlove@'localhost' identified by '49681888' with grant option;

5.創建一個普通用戶

創建一個一般的程序用戶,這個用戶可能只需要SELECT, INSERT, UPDATE, DELETE, CREATE TEMPORARY TABLES等權限如果有存儲過程還需要加上EXECUTE權限,一般是指定內網網段192.168.100網段。

GRANT  USAGE,SELECT, INSERT, UPDATE, DELETE, SHOW VIEW ,CREATE TEMPORARY TABLES,EXECUTE ON samp.shop TO webuser@'192.168.100.%' IDENTIFIED BY  '49681888';

6.創建一個網站用戶

GRANT USAGE,SELECT ON samp.shop TO public@'192.168.100.%' IDENTIFIED BY  '49681888';

7.刷新權限

權限刷新一般指的就是我們在更改了權限的時候,我們需要對權限進行刷新才能使得我們更改的權限生效。。。

FLUSH PRIVILEGES;

8.查看任意用戶的權限

SHOW GRANTS FOR 'webuser'@'192.168.100.%';

9.回收權限

REVOKE DELETE ON test.* FROM 'webuser'@'192.168.100.%';

10.刪除用戶

注意刪除用戶不要使用DELETE直接刪除,因為使用DELETE刪除后用戶的權限並未刪除,新建同名用戶后又會繼承以前的權限。正確的做法是使用DROP USER命令刪除用戶,比如要刪除'webuser'@'192.168.100.%'用戶采用如下命令...

DROP USER 'webuser'@'192.168.100.%';

自己對權限管理算是有了一個基本的學習,也只是簡單的介紹了一些基本的東西。。。權限管理一般在大型項目中使用得到。。。在這里也就不再進行班門弄斧了。。。。

 


免責聲明!

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



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