2011-01-27 1 views
7

Mac OS X 10.6.6にMySQL Community Server(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> 

として、 DROP USERコマンドを実行するとMySQLはエラーを報告しませんが、実際にはユーザを削除しません!

私はphpMyAdmin(3.3.9)からユーザーを削除しようとしましたが、同じ結果が得られました(つまり、報告された成功、エラーメッセージなし、ユーザーは削除されません)。

が、私はこれを研究してきたし、何人かの人々はGRANTがDROP USERコマンドをブロックすることができることを示唆している、しかし、ユーザーにはGRANT権限がありません:

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' 

私はその後、再びユーザーを削除しようとしたが、それはdidnのユーザーを削除/削除することもできません。

MySQlエラーログを確認しましたが、そこには何も異常はありません。

すべての匿名アカウントを削除することは可能ですが、なぜこのアカウントを削除できないのでしょうか?ただ、匿名の1を削除するには、...

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

この方法は、MySQL 4.1より前に使用した

答えて

2

あなたはまだユーザーテーブルからレコードを削除することができます

mysql> mysql.userからの削除WHERE User = '' AND Host = 'my-computer-hostname.local';

5.1.57で働いてくれました。

0

MySQLは誰にもせずにMySQLサーバに接続することを可能にする匿名ユーザーアカウントが含ま回避策として、ユーザーdougerからの提案を使用しますユーザーアカウント。これはテストのためのものであり、データベースサーバーを運用環境に入れる前に削除する必要があります。

実行匿名ユーザーアカウント削除するMySQLサーバに対して次のSQLスクリプト:権限/ユーザアカウントへの変更を行った後

DELETE FROM mysql.user WHERE User=''; 

は、次のコマンドを使用してprovilegeテーブルをフラッシュしてください:

FLUSH PRIVILEGES; 
関連する問題