Skip to content

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コマンドを使用する(推奨)

以下の手順で問題を解決できます:

sql
-- MySQLにrootとしてログイン
sudo mysql

-- 認証方式を変更し、パスワードを設定
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'あなたの新しいパスワード';

-- 変更を適用
FLUSH PRIVILEGES;
bash
# その後、再度mysql_secure_installationを実行
sudo mysql_secure_installation

重要ポイント

  • mysql_native_passwordは従来の認証方式で、多くのツールやスクリプトとの互換性が高いです
  • パスワードは強力なものを設定してください(大文字、小文字、数字、記号を含む)
  • コマンド実行後はsudo mysqlではログインできなくなり、パスワードが必要になります

方法2: 既存の認証方式を維持する

最新の認証方式(caching_sha2_password)を維持したい場合は、別のアプローチもあります:

  1. まずsudo mysqlでMySQLに接続
  2. 既存のrootパスワードが空の場合、以下のコマンドで設定:
sql
ALTER USER 'root'@'localhost' IDENTIFIED BY 'あなたの新しいパスワード';
  1. その後、mysql_secure_installationを実行し、プロンプトで設定したパスワードを使用

mysql_secure_installationの実行

パスワードを設定した後、再度sudo mysql_secure_installationを実行します。プロンプトが表示されたら:

  1. パスワード検証コンポーネントの設定(オプション)
  2. 匿名ユーザーの削除(推奨: Yes)
  3. リモートrootログインの無効化(推奨: Yes)
  4. テストデータベースの削除(推奨: Yes)
  5. 権限テーブルの再読み込み(推奨: Yes)

注意点

この手順を実行後、sudo mysqlだけでrootユーザーとしてログインできなくなります。ログインするには以下のいずれかを使用してください:

bash
# パスワードを使用してログイン
mysql -u root -p

# またはシステム権限でログイン(パスワード不要)
sudo mysql -u root

補足情報

この問題はMySQL 8.0以降のデフォルト認証プラグインの変更に起因しています。新しいcaching_sha2_passwordプラグインはセキュリティ面で優れていますが、一部の古いクライアントやスクリプトと互換性の問題が生じる可能性があります。

セキュリティと互換性のバランスを考慮し、環境に適した認証方式を選択してください。

この手順により、Ubuntu 20.04でのMySQLインストール時のmysql_secure_installationエラーを解決し、安全なデータベース環境を構築できます。