天天看點

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 賦予所有權限   

*.*表示(資料庫.表格名)比如說我們想在samp資料庫裡的shop表建立一個超級權限使用者,那麼*.*就可以寫成 samp.shop

to 表示将權限賦予某個使用者。。

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

identified by 表示為使用者設定一個登陸密碼為:49681888

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

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

4.建立一個超級使用者

5.建立一個普通使用者

建立一個一般的程式使用者,這個使用者可能隻需要SELECT, INSERT, UPDATE, DELETE, CREATE TEMPORARY TABLES等權限如果有存儲過程還需要加上EXECUTE權限,一般是指定内網網段192.168.100網段。

6.建立一個網站使用者

7.重新整理權限

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

8.檢視任意使用者的權限

9.回收權限

10.删除使用者

注意删除使用者不要使用DELETE直接删除,因為使用DELETE删除後使用者的權限并未删除,建立同名使用者後又會繼承以前的權限。正确的做法是使用DROP USER指令删除使用者,比如要删除'webuser'@'192.168.100.%'使用者采用如下指令...

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