Wordpressでパスワードやデータベース名は合っているのに『データベース接続確立エラー』がでる

Wordpressで『データベース接続確立エラー』が起きました。

f:id:nitamago_monster:20150430183141p:plain

ただし、今回はユーザー名やパスワードが違っているわけではなく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に戻して完了です。