8

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のマニュアルには、すべての匿名アカウントを削除できると記載されていますが、なぜこれを削除できないのですか?

4

4 に答える 4

9

または、ルートではなく匿名のものだけを削除するには、次のようにします。

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

5.1.57で私のために働いた。

于 2011-07-05T19:54:09.590 に答える
4

これは大文字による既知のバグです: http: //bugs.mysql.com/bug.php?id = 62255

回避策として、userdougerからの提案を使用してください

于 2012-02-28T08:09:45.017 に答える
3

ユーザーテーブルからレコードを削除することはできます。

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

このメソッドは、MySQL4.1より前に使用されていました...

于 2011-02-27T20:51:25.717 に答える
0

MySQLには、ユーザーアカウントがなくても誰でもMySQLサーバーに接続できる匿名ユーザーアカウントが含まれています。これはテストのみを目的としており、データベースサーバーを実稼働環境に配置する前に削除する必要があります。

MySQLサーバーに対して次のSQLスクリプトを実行して、匿名ユーザーアカウントを削除します。

DELETE FROM mysql.user WHERE User='';

権限/ユーザーアカウントに変更を加えた後、次のコマンドを使用して、必ずprovilegeテーブルをフラッシュしてください。

FLUSH PRIVILEGES;
于 2017-07-17T08:39:12.983 に答える