1
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.

wordpressとmariaDBがつながらないときに試したこと

Last updated at Posted at 2021-05-20

Kubernetesのクラスター上に別サービスでwordpressとmysqlを立てて通信する際、かなり詰まったので解決するために試したことを書いておきます。
WordPress側で発生するError establishing a database connectionを解決するための方法です。

##とりあえず確認したこと

###WordPress側の設定

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define( 'DB_NAME', 'wpdb' );

/** MySQL database username */
define( 'DB_USER', 'wpuser' );

/** MySQL database password */
define( 'DB_PASSWORD', 'wppass' );

wp-config.phpDB_NAME, DB_USER, DB_PASSWORDがmariaDB側と合っているか確認しました。

###mariaDB側の設定

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
| wpdb               |
+--------------------+
MariaDB [(none)]> select user, host from mysql.user;
+-------------+--------------+
| User        | Host         |
+-------------+--------------+
|             | bbcec86f632b |
|             | localhost    |
| mariadb.sys | localhost    |
| mysql       | localhost    |
| root        | localhost    |
| wpuser      | localhost    |
+-------------+--------------+

wp-config.phpで設定しているデータベース, ユーザーが存在しているか確認しました。

show grants for 'ユーザー'@'ホスト'

作成したユーザーが作成したデータベースに対する権限を持っているかの確認も行いました。

##別コンテナの時確認したこと

###wordpress側の設定

/** MySQL hostname */
define( 'DB_HOST', 'mysql' );

私は別サービスでmariadbwordpressを構築していたので、デフォルトのlocalhostだと接続できませんでした。
サービス名で名前解決できるのでサービス名に設定しました。
curl等でリクエストを飛ばし、名前解決が正常に動作しているか確認する必要があるかもしれません。

###mariaDB側の設定

コンフィグの確認

公式サイトを見ながら、作成したuserにアクセスできるよう設定を行いました。

[mysqld]
user = root
datadir = /var/lib/mysql/
skip-networking = 0 
skip-bind-address

my.cnfというファイルにこのような内容を保存し、/etcに配置しました。

mysql --help | find "my.cnf"

検索を行い、デフォルトのコンフィグを書き換えても動作すると思います。

###DBに作成したユーザーのホスト

mariadbに追加したwordpress用のユーザーを別サービスから触るためには、適切な権限が設定されていなければなりません。

'ユーザー名'@'WP側のIP'
または
'ユーザー名'@'%'
ワイルドカード指定なるのですべてのホストから接続可能

私が接続できなかった原因はこれでした。

'ユーザー名'@'localhost'

以前作成したDockerfileからコピペしてきていたため、localhostになったままなのでMariadbに接続できず、wordpressが機能しませんでした。

##まとめ
やっと会えました。

wp.png

1
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
1
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?