Django+Docker+MySQL8.0環境で1156, ‘Plugin caching_sha2_password could not be loaded:

今回はDjango+Docker+MySQL8.0環境で「django.db.utils.OperationalError: (1156, ‘Plugin caching_sha2_password could not be loaded: /usr/lib/x86_64-linux-gnu/mariadb19/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory’)」というエラーが起きたときの対処法についてご紹介いたします。



Django+Docker+MySQL8.0環境で1156, ‘Plugin caching_sha2_password could not be loaded:

Django+Docker+MySQL8.0環境でdocker-compose upを行ったときです。

上記の「django.db.utils.OperationalError: (1156, ‘Plugin caching_sha2_password could not be loaded: /usr/lib/x86_64-linux-gnu/mariadb19/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory’)」というエラーが起きてしまいました。

MySQL5.7から8.0にバージョンアップしたときに認証方式が変わり、caching_sha2_passwordをサポートしているクライアント、コネクタを使用していないと上記のエラーが発生してしまうようです。

実はcaching_sha2_passwordをサポートしているクライアント、コネクタを使用しなくても上記エラーを解消する方法があります。
それは、caching_sha2_passwordではなくmysql_native_passwordを使用するよう設定することで解決できます。

下記のdefault_authentication.cnfというcnfファイルを作り、mysql-confdというフォルダの中に格納します。

docker-compose.ymlのmysqlコンテナの定義で上記default_authentication.cnfをボリュームとして「/etc/mysql/conf.d」以下に配置しましょう。
下記がその例となります。

これでエラーが解消されるはずです。

終わりに

今回はDjango+Docker+MySQL8.0環境で「django.db.utils.OperationalError: (1156, ‘Plugin caching_sha2_password could not be loaded: /usr/lib/x86_64-linux-gnu/mariadb19/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory’)」というエラーが起きたときの対処法についてご紹介いたしました。

最後までお読みいただきありがとうございます。
ブログやTwitterでのシェアOKです。
コメントもお待ちしております。
誤植や勘違いなどございましたらコメント欄にて教えていただけると幸いです。






MySQL

Posted by ちこ