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)
パスワードは'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');
まあ、答えはその表のとおりです。パスワードがリストされていない「ルート」行を削除する必要があります。
また、ユーザーまたはパスを使用しない場合は、どこからでも(?!?!)接続を許可するように見えます。おそらく悪い考えです。私は次のようなことをします:
mysql> use mysql;
mysql> delete from user where password = "";
FLUSH PRIVILEGESを忘れないでください。パスワードがない場合でもログインできます。