web-dev-qa-db-ja.com

パスワードが設定されていても、パスワードを入力しなくてもrootとしてMySQLにアクセスできるのは正常ですか?

MySQL(Ver 14.14 Distrib 5.7.22)をUbuntu 18.04にインストールしたところ、奇妙なものが見つかりました。

MySQLをインストールし、mysql_secure_installationを使用してrootのパスワードを設定しましたが、Sudo権限を持つ任意のユーザーでSSHにログインするとすぐに、mysql -u rootまたはmysql -u root -pを使用して、Enterキーを押すだけです(「Enter password:」と尋ねられたら)。

これは正常ですか?

以前のバージョンから、MySQLにアクセスするときは、Sudoを使用する場合でも、常にパスワードを入力する必要があったことを知っています。

4
xinxin

UbuntuのMySQLパッケージ(Debianに基づく)は、デフォルトでauth_socketプラグインを使用します。このプラグインを使用すると、ローカルマシンから接続するときにパスワードは不要ですが、サーバーはオペレーティングシステムのユーザーを識別し、そのユーザーに一致します。したがって、システムのrootでログインすると、rootになります。これにより、最初にMySQLルートパスワードを設定する必要がなくなります。

参照 https://wiki.debian.org/MySql

10
johannes

SHOW GRANTS FOR 'root'@'localhost';を実行する必要があります

結果にこの行が表示される場合:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED VIA unix_socket WITH GRANT OPTION

この行ではありません:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' WITH GRANT OPTION

つまり、rootユーザーはUNIXソケット資格情報によって自動的に認証されます。これを望まない場合は、手動でGRANTコマンドを発行して(これを実行して足で撃たないでください)、前のコマンドをオーバーライドします。例:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'mysecurepassword' WITH GRANT OPTION;

これでmysqlはパスワードを要求しますが、UNIXソケットにアクセスできるすべてのユーザーが使用できます(デフォルトでは、rootにならずに、もちろんパスワードを知っているだけでmysql -u root -pを使用するだけです)。あなたはどちらがより安全であるかを熟考する必要があります。

なぜmysql_secure_installationがこれについて説明していないのかわかりません。

5
A.B