Wordpressでパスワードやデータベース名は合っているのに「データベース接続確立エラー」が出てしまう

WordPressで「データベース接続確立エラー」が起きたので調べてみました。

データベース接続確立エラー
  • ユーザー名とパスワードが正しいか確認してください。
  • 正しいホスト名を入力しているか確認してください。
  • データベースサーバーが動作中か確認してください。

とありましたが、どれも今回は異なりMySQLソケット(mysql.sock)の位置の違いでした。

エラーの確認

まずはwp-config.phpのデバッグ出力を変更してエラーの詳細を確認します。

define('WP_DEBUG', false);

define('WP_DEBUG', true);

ここで/wp-adminにアクセスすると、

Warning: mysqli_real_connect(): (HY000/2002): No such file or directory in /data/html/wordpress/wp-includes/wp-db.php on line 1444
Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /data/html/wordpress/wp-includes/wp-db.php on line 1474
Warning: mysql_connect(): No such file or directory in /data/html/wordpress/wp-includes/wp-db.php on line 1474
のようなエラーが出ていました。

そこで、自分のmysql.sockの位置を確認します

mysql_config --socket

修正方法

私の環境では /var/lib/mysql/mysql.sock にしていましたが、WordPress標準では /tmp/mysql.sock を見にいくようでここで接続確立エラーが出ていました。これを変更します。

define( 'DB_HOST', 'localhost' );

define( 'DB_HOST', 'localhost:/var/lib/mysql/mysql.sock' );

無事になおったのでdefine(‘WP_DEBUG’, true);をfalseに戻して完了です。