MySQL 8+ ではデフォルトの認証プラグインが caching_sha2_password
に変更されましたが、これにより特定のツールや環境で接続エラーが発生することがあります。特に、Sequel Pro などのツールでは問題が発生することが多いです。この問題を解決するために、以下の手順を試してみてください。
方法 1: ユーザーの認証プラグイン変更
MySQL に接続する
MySQL クライアントまたはターミナルから MySQL に接続します。以下のコマンドを使用して、root ユーザーで MySQL にログインします:
mysql -u root -p
パスワードを求められたら、root のパスワードを入力します。
ユーザーの認証プラグインを変更する
ALTER USER
コマンドを使用して、認証プラグインを mysql_native_password
に変更します。以下のコマンドを実行してください:
ALTER USER 'yourusername'@'localhost' IDENTIFIED WITH mysql_native_password BY 'yourpassword';
ここで、yourusername
を実際のユーザー名に、yourpassword
を新しいパスワードに置き換えます。
変更を反映する
変更を適用するために、特に明示的なコマンドは不要ですが、他の設定変更を行った場合は FLUSH PRIVILEGES
コマンドを実行して変更を反映させることができます:
FLUSH PRIVILEGES;
方法 2: MySQL 5.7 を使用する
Sequel Pro やその他のツールでの互換性を確保する最も簡単な方法は、MySQL 5.7 を使用することです。以下のコマンドを使って Docker コンテナで MySQL 5.7 を起動します:
docker run -p 3306:3306 --name mysql1 -e MYSQL_ROOT_PASSWORD=secret -d mysql:5.7
方法 3: MySQL 8+ を使用し、認証プラグインを変更する
MySQL 8+ を使用する場合、認証プラグインを mysql_native_password
に変更することで接続問題を回避できます。以下の手順で進めてください:
Docker コンテナの起動
mysql_native_password
をデフォルトの認証プラグインとして設定して MySQL 8+ コンテナを起動します:
docker run -p 3306:3306 --name mysql1 -e MYSQL_ROOT_PASSWORD=secret -d mysql:latest --default-authentication-plugin=mysql_native_password
Docker コンテナに接続
コンテナ内の MySQL インスタンスに接続します:
docker exec -it mysql1 bash mysql -u root -p
ユーザーの認証プラグインを変更
既存のユーザーの認証プラグインを mysql_native_password
に変更します:
ALTER USER 'yourusername'@'localhost' IDENTIFIED WITH mysql_native_password BY 'yourpassword';
MySQL 8+ のデフォルト認証プラグイン caching_sha2_password
に関連する接続問題を解決するための方法を紹介しました。