rootパスワードを設定した後、MYSQLでパスワードなしでログインできるのはなぜですか?


10

rootパスワードを設定した後も、MYSQLでコマンドラインからパスワードなしでログインできるのはなぜですか?ルートunixプロンプトで「mysql」と入力すると、パスワードを要求されず、ルートアクセスが許可されます。「mysql -u root」がアカウントに設定したパスワードを要求しないのはなぜですか。

また、リモートマシンからmysqlに「root」としてログインできません。以下で正しく設定していませんか?「ホスト...はこのMySQLサーバーへの接続を許可されていません。 '%'を構成しませんでしたか?

これが私のユーザーテーブルです:

mysql> select host,user,password from user;
+-----------+------+-------------------------------------------+
| host      | user | password                                  |
+-----------+------+-------------------------------------------+
| localhost | root | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 |
| %         | root |                                           |
| 127.0.0.1 | root |                                           |
| ::1       | root |                                           |
| localhost |      |                                           |
| %         |      |                                           |
+-----------+------+-------------------------------------------+
6 rows in set (0.00 sec)

回答:


4

パスワードは'root'@'localhost'ユーザーエントリに設定されているようですが、エントリには設定されていません'root'@'%'。これに基づいて、パスワードなしの認証が許可されます。

セキュリティ上の理由から、どこからでもrootアクセスを許可することを再検討してください。必要な場合は、localhostの指定を削除してください。

drop user 'root'@'localhost';
drop user 'root'@'127.0.0.1';
drop user 'root'@'::1';

そして、'root'@'%'ユーザーのパスワードを設定します。

set password for 'root'@'%' = password('passwordhere');

それは私が必要とするすべてのものであり、それからいくつか。ありがとう。何を取り外しても安全か、安全でないかわからなかったので、あなたは私の質問に答えました。すばらしい答えです。:-)
djangofan

4

ええと、答えはその表のとおりです。パスワードがリストされていない「ルート」行を削除する必要があります。

また、ユーザーまたはパスを使用しない場合、どこからでも接続を許可しているように見えます(?!?!)。おそらく悪い考えです。私は次のようなことをします:

mysql> use mysql;
mysql> delete from user where password = "";

2

FLUSH PRIVILEGESを忘れないでください。パスワードがない場合でもログインできます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.