0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

dockerでcakephpの環境を用意する時にmysqlで関連で起きたエラー

Posted at

dockerでcakephp3.6の環境構築の際にデータベースにmysqlを使用した時に遭遇したエラーと解決方法です。

エラーその1

[2002] php_network_getaddresses: getaddrinfo failed: Name or service not known

原因 host名とdocker-compose.ymlで指定したサービス名が異なる

これは調べてみたらアプリケーション側で指定したhost名とdocker-compose.ymlで指定したservice名が異なる場合に起こるエラーらしい。

docker-compose.yml
version: '3'

services:
  db:
    image: mysql:8.0
    restart: always
    container_name: cake-db
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: master
      MYSQL_USER: pass
      MYSQL_PASSWORD: pass
.env
DB_HOST=db
MYSQL_ROOT_PASSWORD:root
DB_DATABASE=master
DB_USERNAME=pass
DB_PASSWORD=pass

service名とDB_HOSTを一緒にしたら直りました。

エラーその2

[2054] The server requested authentication method unknown to the client

今度は認証系で何やらエラーが起きてます。

原因 mysql8.0からデフォルトの認証方式が変更されている

今回は5.*系ではなく8.0のイメージを指定していて8.0からデフォルトの認証方式が従来のmysql_native_passwordからcaching_sha2_passwordに変更されたらしいので、とりあえず認証方式を従来の方法に変更してみます。

dbサービスのところに

docker-compose.yml
command: --default-authentication-plugin=mysql_native_password

を追加

エラーが解消されました。

参照:
https://dev.mysql.com/doc/refman/8.0/ja/sha256-pluggable-authentication.html
https://mebee.info/2020/08/17/post-16830/
https://qiita.com/uta3chame/items/47b393e5887530573118

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?