LoginSignup
2
3

More than 1 year has passed since last update.

【開発環境構築】DockerでWordpressの開発環境構築をして「Error establishing a database connection」で繋がらないときはwp-config.phpを確認!

Last updated at Posted at 2021-06-03

Error_establishing_a_database_connection.png

Wordpressの開発環境をDockerで作ろうとしたところ、「Error establishing a database connection」というエラーメッセージが表示されてしまいました。少し詰まったので備忘録として書いておきます。

原因1:dockerのvolumeが残ってしまっていた。

解決策:docker volume pruneで未使用のvolumeを削除する。

docker-compose.ymlに下記のように記載していました。

docker-compose.yml
...
  db:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_DATABASE: db
      MYSQL_USER: user
      MYSQL_PASSWORD: pass
    volumes:
      - db:/var/lib/mysql

volumes:
  wordpress:
  db:

このymlファイルで一度コンテナを起動後、ユーザー名やパスワードを変更して作業をしていたので、dbコンテナに入ってからmysqlに接続しようとしても「パスワードが違います」というメッセージが表示されてしまい、接続ができませんでした。

ymlファイルを見直し、「これ、volumeが残っているから修正した情報が反映されてないのでは...?」と気づき、docker volume pruneで古いvolumeを削除。再度コンテナを起動したところ、修正後の情報でmysqlへ接続できました。

原因2:wp-config.phpのDB_HOSTはDBコンテナ名

解決策:wp-config.phpのDB_HOSTをDBコンテナ名に変更する。

wp-config.php
修正前
/** MySQL のホスト名 */
define('DB_HOST', 'localhost');

修正後
/** MySQL のホスト名 */
define('DB_HOST', 'db'); // ymlに記載したDBコンテナ名

wordpressの設定ファイルは、ルートディレクトリにwp-config-sample.phpがあるので、これをwp-config.phpとしてコピーを行い、使用します。この中にDBの接続情報が記載されているのですが、このDB_HOSTの値をdockerで作成するDBのコンテナ名に設定したところ、無事にWordpressの画面が表示されました。

最後に

Error_establishing_a_database_connection.png
URLにhttp://localhost:8080/wp-admin/で接続すると、上記のような画面が表示されました。ここに表示されている「Are you sure you have typed the correct hostname?」を見て、原因2を疑うことができました。

それでは!

参考情報:
・未使用のコンテナ、volumeなどを一括削除
https://qiita.com/reflet/items/5caa88abcf1e8964783a

・Docker: 使っていないボリュームを削除してディスク使用量を節約する
https://hoge-hogeo-777.hatenablog.com/entry/2019/03/01/183000

2
3
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
2
3