MySQL Communityサーバー(5.5.8)をMac OSX10.6.6にインストールしました。
安全なインストール(rootにパスワードを割り当てる、匿名アカウントを削除するなど)のルールに従っていますが、削除できないユーザーアカウントが1つあります。
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)内からユーザーを削除しようとしましたが、同じ結果が得られました(つまり、成功が報告され、エラーメッセージが表示されず、ユーザーが削除されませんでした)。
私はこれを調査しましたが、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'
その後、もう一度ユーザーをドロップしてみましたが、ユーザーのドロップ/削除もしませんでした。
MySQlエラーログを確認しましたが、異常はありません。
MySQLのマニュアルには、すべての匿名アカウントを削除できると記載されていますが、なぜこれを削除できないのですか?