一、MySQL權限簡介
關于mysql的權限簡單的了解就是mysql允許你做你全力以内的事情,不可以越界。比如隻允許你執行select操作,那麼你就不能執行update操作。隻允許你從某台機器上連接配接mysql,那麼你就不能從除那台機器以外的其他機器連接配接mysql。
那麼Mysql的權限是如何實作的呢?這就要說到mysql的兩階段驗證,下面詳細介紹:第一階段:伺服器首先會檢查你是否允許連接配接。因為建立使用者的時候會加上主機限制,可以限制成本地、某個IP、某個IP段、以及任何地方等,隻允許你從配置的指定地方登陸。第二階段:如果你能連接配接,Mysql會檢查你發出的每個請求,看你是否有足夠的權限實施它。比如你要更新某個表、或者查詢某個表,Mysql會檢視你對哪個表或者某個列是否有權限。再比如,你要運作某個存儲過程,Mysql會檢查你對存儲過程是否有執行權限等。
MYSQL到底都有哪些權限呢?從官網複制一個表來看看:
權限
權限級别
權限說明
CREATE
資料庫、表或索引
建立資料庫、表或索引權限
DROP
資料庫或表
删除資料庫或表權限
GRANT OPTION
資料庫、表或儲存的程式
賦予權限選項
REFERENCES
ALTER
表
更改表,比如添加字段、索引等
DELETE
删除資料權限
INDEX
索引權限
INSERT
插入權限
SELECT
查詢權限
UPDATE
更新權限
CREATE VIEW
視圖
建立視圖權限
SHOW VIEW
檢視視圖權限
ALTER ROUTINE
存儲過程
更改存儲過程權限
CREATE ROUTINE
建立存儲過程權限
EXECUTE
執行存儲過程權限
FILE
伺服器主機上的檔案通路
檔案通路權限
CREATE TEMPORARY TABLES
伺服器管理
建立臨時表權限
LOCK TABLES
鎖表權限
CREATE USER
建立使用者權限
PROCESS
檢視程序權限
RELOAD
執行flush-hosts, flush-logs, flush-privileges, flush-status, flush-tables, flush-threads, refresh, reload等指令的權限
REPLICATION CLIENT
複制權限
REPLICATION SLAVE
SHOW DATABASES
檢視資料庫權限
SHUTDOWN
關閉資料庫權限
SUPER
執行kill線程權限
MYSQL的權限如何分布,就是針對表可以設定什麼權限,針對列可以設定什麼權限等等,這個可以從官方文檔中的一個表來說明:
權限分布
可能的設定的權限
表權限
'Select', 'Insert', 'Update', 'Delete', 'Create', 'Drop', 'Grant', 'References', 'Index', 'Alter'
列權限
'Select', 'Insert', 'Update', 'References'
過程權限
'Execute', 'Alter Routine', 'Grant'
二、MySQL權限經驗原則:
權限控制主要是出于安全因素,是以需要遵循一下幾個經驗原則:
1、隻授予能滿足需要的最小權限,防止使用者幹壞事。比如使用者隻是需要查詢,那就隻給select權限就可以了,不要給使用者賦予update、insert或者delete權限。
2、建立使用者的時候限制使用者的登入主機,一般是限制成指定IP或者内網IP段。
3、初始化資料庫的時候删除沒有密碼的使用者。安裝完資料庫的時候會自動建立一些使用者,這些使用者預設沒有密碼。
4、為每個使用者設定滿足密碼複雜度的密碼。
5、定期清理不需要的使用者。回收權限或者删除使用者。
三、MySQL權限實戰:
1、GRANT指令使用說明:
先來看一個例子,建立一個隻允許從本地登入的超級使用者jack,并允許将權限賦予别的使用者,密碼為:jack.
GRANT指令說明:
ALL PRIVILEGES 是表示所有權限,你也可以使用select、update等權限。
ON 用來指定權限針對哪些庫和表。
*.* 中前面的*号用來指定資料庫名,後面的*号用來指定表名。
TO 表示将權限賦予某個使用者。
IDENTIFIED BY 指定使用者的登入密碼。
WITH GRANT OPTION 這個選項表示該使用者可以将自己擁有的權限授權給别人。注意:經常有人在建立操作使用者的時候不指定WITH GRANT OPTION選項導緻後來該使用者不能使用GRANT指令建立使用者或者給其它使用者授權。
備注:可以使用GRANT重複給使用者添權重限,權限疊加,比如你先給使用者添加一個select權限,然後又給使用者添加一個insert權限,那麼該使用者就同時擁有了select和insert權限。
2、重新整理權限
使用這個指令使權限生效,尤其是你對那些權限表user、db、host等做了update或者delete更新的時候。以前遇到過使用grant後權限沒有更新的情況,隻要對權限做了更改就使用FLUSH PRIVILEGES指令來重新整理權限。
3、檢視權限
4、回收權限
5、删除使用者
6、對賬戶重命名
7、修改密碼
本文轉自不要超過24個字元部落格51CTO部落格,原文連結http://blog.51cto.com/cstsncv/2059718如需轉載請自行聯系原作者
cstsncv