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ソケットの場所確認方法
自分のmysql.sockの場所を確認します。
mysql_config --socket
mysql_cofig
コマンドを使用して確認すると以下の様になっていたのでこのソケット場所を設定します。
/var/lib/mysql/mysql.sock
と出てきたので、原因がWordPress標準では /tmp/mysql.sock
を見に行くのに自分の環境ではソケットの場所が/var/lib/mysql/mysql.sock
にあったことが原因だと分かりました!
修正方法
DB_HOSTを以下のように変更します。
define( 'DB_HOST', 'localhost' );
↓
define( 'DB_HOST', 'localhost:/var/lib/mysql/mysql.sock' );
無事になおったのでdefine('WP_DEBUG', true);
をfalseに戻して完了です🎉