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というフォルダの中に格納します。
1 2 |
[mysqld] default_authentication_plugin= mysql_native_password |
docker-compose.ymlのmysqlコンテナの定義で上記default_authentication.cnfをボリュームとして「/etc/mysql/conf.d」以下に配置しましょう。
下記がその例となります。
1 2 3 4 5 6 7 8 9 10 |
db: container_name: xxxx image: mysql:8.0 restart: always environment: ~省略~ volumes: - ./docker-mysql/mysql-confd:/etc/mysql/conf.d ports: - 3306:3306 |
これでエラーが解消されるはずです。
終わりに
今回は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’)」というエラーが起きたときの対処法についてご紹介いたしました。
ディスカッション
コメント一覧
まだ、コメントがありません