Ubuntu 20.04でのMySQLインストール: mysql_secure_installationエラーの解決方法
問題の概要
Ubuntu 20.04にMySQLをインストール後、sudo mysql_secure_installation
コマンドを実行すると、以下のエラーが発生します:
... Failed! Error: SET PASSWORD has no significance for user 'root'@'localhost' as the authentication method used doesn't store authentication data in the MySQL server. Please consider using ALTER USER instead if you want to change authentication parameters.
このエラーは、MySQL 8.0のデフォルトの認証プラグインがcaching_sha2_password
に変更されたため発生します。mysql_secure_installation
スクリプトがこの新しい認証方式と完全に互換性がない場合にこの問題が起こります。
解決方法
方法1: ALTER USERコマンドを使用する(推奨)
以下の手順で問題を解決できます:
-- MySQLにrootとしてログイン
sudo mysql
-- 認証方式を変更し、パスワードを設定
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'あなたの新しいパスワード';
-- 変更を適用
FLUSH PRIVILEGES;
# その後、再度mysql_secure_installationを実行
sudo mysql_secure_installation
重要ポイント
mysql_native_password
は従来の認証方式で、多くのツールやスクリプトとの互換性が高いです- パスワードは強力なものを設定してください(大文字、小文字、数字、記号を含む)
- コマンド実行後は
sudo mysql
ではログインできなくなり、パスワードが必要になります
方法2: 既存の認証方式を維持する
最新の認証方式(caching_sha2_password
)を維持したい場合は、別のアプローチもあります:
- まず
sudo mysql
でMySQLに接続 - 既存のrootパスワードが空の場合、以下のコマンドで設定:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'あなたの新しいパスワード';
- その後、
mysql_secure_installation
を実行し、プロンプトで設定したパスワードを使用
mysql_secure_installationの実行
パスワードを設定した後、再度sudo mysql_secure_installation
を実行します。プロンプトが表示されたら:
- パスワード検証コンポーネントの設定(オプション)
- 匿名ユーザーの削除(推奨: Yes)
- リモートrootログインの無効化(推奨: Yes)
- テストデータベースの削除(推奨: Yes)
- 権限テーブルの再読み込み(推奨: Yes)
注意点
この手順を実行後、sudo mysql
だけでrootユーザーとしてログインできなくなります。ログインするには以下のいずれかを使用してください:
# パスワードを使用してログイン
mysql -u root -p
# またはシステム権限でログイン(パスワード不要)
sudo mysql -u root
補足情報
この問題はMySQL 8.0以降のデフォルト認証プラグインの変更に起因しています。新しいcaching_sha2_password
プラグインはセキュリティ面で優れていますが、一部の古いクライアントやスクリプトと互換性の問題が生じる可能性があります。
セキュリティと互換性のバランスを考慮し、環境に適した認証方式を選択してください。
この手順により、Ubuntu 20.04でのMySQLインストール時のmysql_secure_installation
エラーを解決し、安全なデータベース環境を構築できます。