Posted on 2008-04-29 13:52
G_G 閱讀(11670)
評論(3) 編輯 收藏 所屬分類:
Database
MySQL
存取控制包含2個階段:
- 階段1:服務器檢查是否允許你連接。
- 階段2:假定你能連接,服務器檢查你發出的每個請求??茨闶欠裼凶銐虻臋嘞迣嵤┧?。例如,如果你從數據庫表中選擇(select)行或從數據庫刪除表,服務器確定你對表有SELECT權限或對數據庫有DROP權限。
參考 :
5.8. MySQL用戶賬戶管理
1.權限查看
mysql>?show?grants?for?'root'@'localhost'?;
+---------------------------------------------------------------------+
|?Grants?for?root@localhost???????????????????????????????????????????|
+---------------------------------------------------------------------+
|?GRANT?ALL?PRIVILEGES?ON?*.*?TO?'root'@'localhost'?WITH?GRANT?OPTION?|
+---------------------------------------------------------------------+
1?row?in?set?(0.06?sec)
2.權限設置
5.8.2. 向MySQL增加新用戶賬戶mysql>?GRANT?ALL?PRIVILEGES?ON?*.*?TO?'monty'@'localhost'
????->?????IDENTIFIED?BY?'some_pass';
mysql>?GRANT?ALL?PRIVILEGES?ON?*.*?TO?'monty'@'%'
????->?????IDENTIFIED?BY?'some_pass'?WITH?GRANT?OPTION;
??
其中兩個賬戶有相同的用戶名monty和密碼some_pass。兩個賬戶均為超級用戶賬戶,具有完全的權限可以做任何事情。一個賬戶
('monty'@'localhost')只用于從本機連接時。另一個賬戶('monty'@'%')可用于從其它主機連接。
mysql>?GRANT?RELOAD,PROCESS?ON?*.*?TO?'admin'@'localhost';
該賬戶只用于從本機連接。授予了RELOAD和PROCESS管理權限。這些權限允許admin用戶執行mysqladmin
reload、mysqladmin
refresh和mysqladmin
flush-xxx命令,以及mysqladmin
processlist。未授予訪問數據庫的權限。你可以通過GRANT語句添加此類權限。
mysql>?GRANT?USAGE?ON?*.*?TO?'dummy'@'localhost';
???
一個賬戶有用戶名dummy,沒有密碼。該賬戶只用于從本機連接。未授予權限。通過GRANT語句中的USAGE權限,你可以創建賬戶而不授予任何權限。它可以將所有全局權限設為'N'。假定你將在以后將具體權限授予該賬戶。
下面的例子創建
3個賬戶,允許它們訪問專用數據庫。每個賬戶的用戶名為
custom,密碼為
obscure。
mysql>?GRANT?SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
????->?????ON?bankaccount.*
????->?????TO?'custom'@'localhost'
????->?????IDENTIFIED?BY?'obscure';
mysql>?GRANT?SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
????->?????ON?expenses.*
????->?????TO?'custom'@'whitehouse.gov'
????->?????IDENTIFIED?BY?'obscure';
mysql>?GRANT?SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
????->?????ON?customer.*
????->?????TO?'custom'@'server.domain'
????->?????IDENTIFIED?BY?'obscure';
這3個賬戶可以用于:
·?????????第1個賬戶可以訪問bankaccount數據庫,但只能從本機訪問。
·?????????第2個賬戶可以訪問expenses數據庫,但只能從主機whitehouse.gov訪問。
·?????????第3個賬戶可以訪問customer數據庫,但只能從主機server.domain訪問。
要想不用GRANT設置custom賬戶,使用INSERT語句直接修改?授權表:
5.8.3.?從MySQL刪除用戶賬戶
DROP USER user;