mysql.userから匿名ユーザーを削除できません


15

mysql.usersデータベースから匿名ユーザーを削除しようとしています。しかし、私は奇妙な行動を取っています。コマンドを入力すると:

DROP User ''@'WOPR';

一般的なエラーメッセージが表示されていました。そこで、マシンをリブートして、もう一度試しました。今回は応答を得た

Query OK, 0 rows affected.

しかし、私が入れたとき

SELECT User, Host, Password FROM mysql.user WHERE User='';

戻り値は次のとおりです。

+------+------+----------+
| User | Host | Password |
+------+------+----------+
|      | WOPR |          |
+------+------+----------+

(WOPRは私のホスト名です)

コマンドを実行します

DROP User ''@'WOPR';

同じ結果が得られます。

カーネルバージョン2.6.33のArch LinuxでMySQL 5.5の新規インストールを実行しています。

誰がこの動作を引き起こす可能性があるか知っていますか?


この性質の質問をDBA StackExchangeに送信するには、言葉を広めてください!!!
RolandoMySQLDBA

回答:


15
DELETE FROM mysql.user WHERE user='' AND host='WOPR';
FLUSH PRIVILEGES;

これはあなたのためにそれを行う必要があります。

試してみる !!!

警告

MySQLには、mysql.userに特定のユーザーがプレインストールされています。また、mysql.dbには、データベースをテストするための匿名アクセスと完全な権限を持つ2人のユーザーが付属しています。

これをやるだけ

SELECT * FROM mysql.db \G

testまたはtest_で始まるデータベースに接続する人はだれでも、テストデータベース内のすべてを実行できることがわかります。これは、テストデータベースへのフルアクセスを持つユーザーが数分でディスクを使い果たす可能性があるため、良くありません。

例:

use test
CREATE TABLE junk (INT a) ENGINE=MyISAM;
INSERT INTO junk VALUES (1);

わかった、大したことだ。4バイトのテーブルを作成します。

このSQLステートメントを30回実行してみます。

INSERT INTO junk SELECT * FROM junk;

こんにちは、1,073,741,824行のインスタントテーブル(4GB以上のファイル)!!! ディスク上でこの種の大混乱を引き起こすことができるテストデータベースに対する完全な権限を持つイメージング。

あなたへの私のアドバイスは、これを実行してテストユーザーアクセスを一掃することです:

DELETE FROM mysql.db WHERE db LIKE 'tes%' AND user='';
FLUSH PRIVILEGES;

詳細については、MySQLの投稿を参照してください。mysql.dbに「テスト」エントリがあるのはなぜですか?

乾杯!!!


こんにちはRolando、それはトリックをしました、ありがとう!私は実際にテストデータベースへのアクセスを今修正しています。
SirTasty

drop user基になるmysql.userテーブルを直接変更する代わりに構文を使用する方法はありませんか?
Pacerier 14年

1
@Pacerier元の質問をご覧ください。本当の問題はDROP USER、ユーザーフィールドが空白(空の文字列)の場合構文が機能しないことです。答えが示すようにそれをしなければなりません。
RolandoMySQLDBA 14年

@RolandoMySQLDBA、ハッキングに加えて他のソリューションはありますか mysql.userテーブルをますか?
14

@Pacerier最後のリンクを読むと、MySQL(現在のOracle)mysql.dbがインストール時に2行を直接配置し、匿名ユーザーがテストデータベースにアクセスできることに気付くでしょう。興味深いことに、Percona Serverのインストールでは、インストールが完了する前にそれらの行が削除されると言われました(dba.stackexchange.com/questions/66584/…)。MySQLを使用しているため、mysql_secure_installationを実行するか、これら2つの行を自分で削除します。
RolandoMySQLDBA 14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.