Sequel ProでMySQL8.0以降を使用して、DockerからアプリケーションからMySQLをつなげるときにはまったこと


問題発生

Dockerを使ってアプリケーション(Laravelなど)からMySQLに接続する(php artisan migrateなどで)時に、
接続できません!!
とターミナルで怒られてしまったのですが、
Sequel Proを見ても動いているし、
MySQLのコンテナに入っても動いているので原因がわからず、
envファイルが違うのかなんなと原因究明していて迷走していたので記事にしました。。。

結論

MySQLの認証方式が「mysql_native_password」ではなく、なぜか「caching_sha2_password」を使う必要があったため。

ただ、Sequel Proでは「caching_sha2_password」使えないから「mysql_native_password」を使えよと怒られたので、
使ってみたんですが、この場合はアプリケーションとMySQLは接続できたのでSequel Proを動かしてみたら以下のように怒られてしまいました。

→Sequel Proで使うために「mysql_native_password」を使用したからこんなことになってしまったのです。

多分MySQL8.0以降を使うならMySQL Workbenchとか別のもの使った方がいいのか?


Sequel Pro Nightly build より

MySQL said: Authentication plugin 'caching_sha2_password' cannot be loaded: dlopen(/usr/local/mysql/lib/plugin/caching_sha2_password.so, 2): image not found

まとめ

  • MySQL8.0.4以降 のログイン認証方式は caching_sha2_password がデフォルト
  • PHP 7.1.16, 7.2.4 以降のバージョンから caching_sha2_password に対応しているので「caching_sha2_password」をそのまま利用する
  • しかし、Sequel Pro Nightly buildでは「caching_sha2_password」を使用できない

以上、Sequel ProとMySQL8.0以降を使用する機会があったらご注意ください。(Sequel Pro不具合多いし、MySQL Workbench使った方がいいのかな...)
ほんと環境設定とかで止まるのが辛いです。

参考文献
https://www.suzu6.net/posts/256-mysql8-pdomysql-caching_sha2_password/
https://qiita.com/ucan-lab/items/3ae911b7e13287a5b917
https://qiita.com/ucan-lab/items/b68db1db931c954da921