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を使用する場合でも、常にパスワードを入力する必要があったことを知っています。
UbuntuのMySQLパッケージ(Debianに基づく)は、デフォルトでauth_socket
プラグインを使用します。このプラグインを使用すると、ローカルマシンから接続するときにパスワードは不要ですが、サーバーはオペレーティングシステムのユーザーを識別し、そのユーザーに一致します。したがって、システムのrootでログインすると、rootになります。これにより、最初にMySQLルートパスワードを設定する必要がなくなります。
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
がこれについて説明していないのかわかりません。