2011-01-27 80 views
7

我剛剛在Mac OS X 10.6.6上安裝了MySQL社區服務器(5.5.8)。MySQL似乎是DROP USER;但用戶仍然存在於mysql.users表

我一直遵守規則的安全安裝(指定密碼到root,刪除匿名賬戶,等等),但是,沒有,我不能刪除一個用戶帳戶:

mysql> select host, user from mysql.user; 
+--------------------------------+------+ 
| host       | user | 
+--------------------------------+------+ 
| 127.0.0.1      | root | 
| ::1       | root | 
| My-Computer-Hostname.local  |  | 
| My-Computer-Hostname.local  | root | 
| localhost      | root | 
| localhost      | web | 
+--------------------------------+------+ 
6 rows in set (0.00 sec) 

mysql> drop user ''@'My-Computer-Hostname.local'; 
Query OK, 0 rows affected (0.00 sec) 

mysql> flush privileges; 
Query OK, 0 rows affected (0.00 sec) 

mysql> select host, user from mysql.user; 
+--------------------------------+------+ 
| host       | user | 
+--------------------------------+------+ 
| 127.0.0.1      | root | 
| ::1       | root | 
| My-Computer-Hostname.local  |  | 
| My-Computer-Hostname.local  | root | 
| localhost      | root | 
| localhost      | web | 
+--------------------------------+------+ 
6 rows in set (0.00 sec) 

mysql> 

由於你可以看到,MySQL在執行DROP USER命令時報告沒有錯誤,但實際上並沒有刪除用戶!

我試着從phpMyAdmin(3.3.9)中刪除用戶,併產生了相同的結果(即報告成功,沒有錯誤消息,用戶沒有刪除)。

我研究這個,有些人認爲,許可也可以阻斷DROP USER命令,但是,用戶沒有授予權限:

mysql> SHOW GRANTS FOR ''@'My-Computer-Hostname.local'; 
+-----------------------------------------------------------+ 
| Grants for @my-computer-hostname.local    | 
+-----------------------------------------------------------+ 
| GRANT USAGE ON *.* TO ''@'my-computer-hostname.local' | 
+-----------------------------------------------------------+ 
1 row in set (0.00 sec) 

mysql> REVOKE GRANT OPTION ON *.* FROM ''@'My-Computer-Hostname.local'; 
ERROR 1141 (42000): There is no such grant defined for user '' on host 'my-computer-hostname.local' 

我試過之後再次下探的用戶,但它沒不要丟棄/刪除用戶。

我檢查了我的MySQl錯誤日誌,在那裏沒有什麼不尋常的。

MySQL手冊建議可以刪除所有匿名賬戶,爲什麼我不能刪除這個賬戶?

回答

2

您仍然可以從用戶表中刪除記錄:

mysql> DELETE FROM user WHERE host='my-computer-hostname.local';
Query OK, 2 rows affected (0.00 sec)

這種方法之前,MySQL 4.1中使用...

6

或者,僅刪除一個匿名而不是根:

mysql> DELETE FROM mysql.user WHERE User =''AND Host ='my-computer-hostname.local';

在5.1.57上爲我工作。

0

MySQL包含一個匿名用戶帳戶,允許任何人連接到MySQL服務器,而無需一個用戶帳戶。這僅用於測試,應在數據庫服務器放入生產環境之前刪除。

運行鍼對MySQL服務器下面的SQL腳本刪除匿名用戶帳戶:

DELETE FROM mysql.user WHERE User=''; 

更改權限/用戶帳戶後,請確保您使用以下命令刷新provilege表:

FLUSH PRIVILEGES; 
相關問題