MySQL用戶權限管理

 一般都知道MySQL創建用戶和賦權限是用

  1. GRANT ... ON *.* TO 'myname'@'%.mydomain.com' IDENTIFIED BY 'mypass'
  2.  
  3. GRANT ... ON mydatabase.* TO 'myname'@'%.mydomain.com' IDENTIFIED BY 'mypass'

撤銷權限是用

  1. REVOKE ... FROM 'myname'

今天遇到一個情況,數據庫games,只允許用戶myname對players表的id和name這兩個字段有SELECT權限,在查閱了MySQL的參考手冊後,發現GRANT和REVOKE命令是可以針對不同字段來設置權限的,完整的命令應該是:

  1. GRANT priv_type [(column_list)] [, priv_type [(column_list)]] ... 
  2.     ON [object_type] {tbl_name | * | *.* | db_name.*} 
  3.     TO user [IDENTIFIED BY [PASSWORD'password'
  4.         [, user [IDENTIFIED BY [PASSWORD'password']] ... 
  5.     [REQUIRE 
  6.         NONE | 
  7.         [{SSL| X509}] 
  8.         [CIPHER 'cipher' [AND]] 
  9.         [ISSUER 'issuer' [AND]] 
  10.         [SUBJECT 'subject']] 
  11.     [WITH with_option [with_option] ...] 
  12.  
  13. object_type = 
  14.     TABLE 
  15.   | FUNCTION 
  16.   | PROCEDURE 
  17.  
  18. with_option = 
  19.     GRANT OPTION 
  20.   | MAX_QUERIES_PER_HOUR count 
  21.   | MAX_UPDATES_PER_HOUR count 
  22.   | MAX_CONNECTIONS_PER_HOUR count 
  23.   | MAX_USER_CONNECTIONS count 
  24.  
  25. REVOKE priv_type [(column_list)] [, priv_type [(column_list)]] ... 
  26.     ON [object_type] {tbl_name | * | *.* | db_name.*} 
  27.     FROM user [, user] ... 
  28.  
  29. REVOKE ALL PRIVILEGESGRANT OPTION FROM user [, user] ... 

我的情況賦權限應該是:

  1. GRANT SELECT (id, nameON games.players TO 'myname'@'%.mydomain.com';
  2. FLUSH PRIVILEGES;

參考文檔:

http://dev.mysql.com/doc/refman/5.1/zh/sql-syntax.html#drop-user

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章