2013-06-22 99 views
1

對於每個新用戶,我們在創建MySQL的使用語句撤銷權限在MySQL的

CREATE USER [email protected] IDENTIFIED BY 'password'; 

「SHOW GRANTS」只顯示「使用ON *。*」的特權。

但是用戶可以在「test」和「information_schema」數據庫上選擇,插入,..我無法使用下面給出的撤銷語句在「測試」上撤銷這些特權。

REVOKE ALL ON test.* FROM [email protected]; 
ERROR 1141 (42000) : There is no such grant defined for user 'guest' on host 'localhost' 

我只是不想讓newuser訪問test和information_schema數據庫。

+0

那麼刪除用戶並用'GRANT ... ON 。*'而不是'*。*''再次創建它呢? – alfasin

+0

我嘗試了「授予數據庫使用*到newuser @ localhost IDENTIFIED BY'密碼';」但是仍然授予所有數據庫,即新用戶對「*。*的使用」 – Roronoa

回答

5

http://dev.mysql.com/doc/refman/5.6/en/default-privileges.html

默認情況下,mysql.db表包含允許通過 任何用戶訪問數據庫test和其他數據庫與該名稱與 開始test_行。 (...)這意味着這樣的數據庫可以使用,即使這些帳戶不具有 權限。如果你想刪除任何用戶訪問測試數據庫, 這樣做如下:

mysql> DELETE FROM mysql.db WHERE Db LIKE 'test%'; 
mysql> FLUSH PRIVILEGES; 

(...) 與前面的變化,只有誰擁有全球數據庫 權限或權限的用戶明確授予的測試數據庫可以使用它 。

information_schema數據庫是一個應要求即時建立的只讀僞數據庫。用戶將始終能夠查閱此數據庫,但只能顯示他們已有權訪問的條目。