MySQL管理員應該知道怎樣通過指定哪些用戶可連接到服務器
從哪裡進行連接
以及在連接時做什麼
來設置MySQL用戶賬號
MySQL
引入了兩個更容易進行這項工作的語句
GRANT 語句創建MySQL用戶並指定其權限
REVOKE 語句刪除權限
這兩個語句充當mysql數據庫中的授權表的前端
並提供直接操縱這些表內容的可選擇的方法
GRANT 和REVOKE 語句影響以下四個表
授權表 內容
user 可連接到服務器的用戶和他們擁有的任何全局特權
db 數據庫級的特權
tables _ priv 表級特權
c o l um n s _ priv 列級特權
還有第五個授權表( host)
但它不受GRANT 或REVOKE的影響
當您為某個用戶發布GRANT 語句時
應在user表中為該用戶創建一個項
如果該語句指定了所有全局特權(管理權限或用於所有數據庫的權限)
則這些指定也被記錄在user表中
如果指定了數據庫
表或列的權限
它們將記錄在db
tables_priv 和columns_priv表中
使用GRANT 和REVOKE語句比直接修改授權表更容易
但是
建議您最好通過閱讀第
章來補充本章的內容
第
章中詳細討論了授權表
這些表非常重要
作為一位管理員應該了解這些表是怎樣在GRANT 和REVOKE 語句級上工作的
本節下面的部分將討論如何設置MySQL用戶的賬號和授權
還將介紹如何取消權限以及從授權表中刪除全部用戶
並且將考慮一個困擾許多新的MySQL管理員的難題
您還要考慮使用mysqlaccess 和mysql_setpermission 腳本
它們是MySQL分發包的組成部分
這些是Perl 的腳本
它們提供了設置用戶賬號的GRANT 語句的代用品
mysql_setpermission 需要具有DBI 的支持環境
創建新用戶和授權
GRANT 語句的語法如下
GRANT privileges (columns)
ON what
TO user IDENTIFIEDBY
password
WITH GRANT OPTION
要使用該語句
需要填寫以下部分
privileges 分配給用戶的權限
下表列出了可在GRANT 語句中使用的權限說明符
權限說明符權限允許的操作
上表顯示的第一組權限說明符適用於數據庫
表和列
第二組說明符是管理特權
通常
這些權限的授予相當保守
因為它們會影響服務器的操作(例如
SHUTDOWN 特權不是按每天來分發的權限)
第三組說明符是特殊的
ALL的意思是
所有的權限
而USAGE 的意思是
無權限
─即創建用戶
但不授予任何的權限
columns 權限適用的列
這是可選的
只來設置列專有的權限
如果命名多於一個列
則用逗號分開
what 權限應用的級別
權限可以是全局的(適用於所有數據庫和所有的表)
數據庫專有的(適用於某個數據庫中的所有表)
或表專有的
可以通過指定一個C O L U M N S子句將權限授予特定的列
user 使用權限的用戶
它由用戶名和主機名組成
在MySQL中
不僅指定誰進行連接
還要指定從哪裡連接
它允許您擁有兩個帶有相同名字的
從不同位置連接的用戶
MySQL允許在它們之間進行區別並相互獨立地分配權限
MySQL的用戶名就是您在連接到服務器時指定的名字
該名字與您的UNIX 注冊名或Windows 名的沒有必然連系
缺省設置時
客戶機程序將使用您注冊的名字作為MySQL的用戶名(如果您不明確指定一個名字的話)
但這只是一個約定
有關將root作為可以操作一切MySQL的超級用戶名也是這樣
就是一種約定
您也可以在授權表中將此名修改成nobody
然後作為nobody 用戶進行連接
以執行需要超級用戶特權的操作
password 分配給該用戶的口令
這是可選的
如果您不給新用戶指定IDENTIFIEDBY子句
該用戶不分配口令(是非安全的)
對於已有的用戶
任何指定的口令將替代舊口令
如果不指定新口令
用戶的舊口令仍然保持不變
當您確實要使用ID E N T I F I E DBY 時
該口令串應該是直接量
GRANT 將對口令進行編碼
當用SET PA S S W O R D語句時
不要使用PASSWORD() 函數
WITH GRANT OPTION 子句是可選的
如果包含該子句
該用戶可以將GRANT 語句授予的任何權限授予其他的用戶
可以使用該子句將授權的能力授予其他的用戶
From:http://tw.wingwit.com/Article/program/MySQL/201311/29478.html