LoginSignup
10
6

More than 5 years have passed since last update.

Wordpress入れたら「データベース接続確立エラー」が消えない

Posted at

対象読者

よくネットで見かける原因

  • wp-config.phpの設定が間違っている
  • パーミションに問題がある
  • MySQLも起動していない
  • データベースが壊れている

どれも当てはまらないのに「データベース接続確立エラー」が出る。
という人が対象です。

環境(私の)

  • centos 6.5(64bi)
  • PHP 5.6.10
  • MySQl 5.7.15

状況

  • 「データベース接続確立エラー」が出て先に進めない

調査1. なぜ接続出来ないのかを調査

  • wp-config.phpに、define('WP_DEBUG', true); の1行を追加します。
    • これでエラーが起きたときの原因を表示出来ます
PHP Warning:  mysql_connect(): No such file or directory in /home/deploy/web/releases/20160916035114/public_html/wp-includes/wp-db.php on line 1549

こんなのが出てました。
よくよく調べてみると、mysql.sockを探すことができず、PHPからMySQLへの失敗しているみたいです。
(私の場合は、コンソールからMySQLへの接続が出来たので不思議に思ってましたが納得です。多分普通にPDOとか使った接続も出来ないと思います)

調査2. mysql.sockはどこにあるのか

/etc/my.cnfに書いてあります。

# cat /etc/my.cnf | grep mysql.sock
socket=/var/lib/mysql/mysql.sock

調査3. pdoのデフォルトのMySQLのソケット参照の場所確認

$ php -i | grep mysql.sock
pdo_mysql.default_socket => /tmp/mysql.sock => /tmp/mysql.sock

これです。実際にmysql.sockは、/var/lib/mysql/mysql.sockにありますが、
PHP側の設定では、/tmp/mysql.sockを参照する用になってます。

これを合わせる必要があります。

対応

対処するには、2種類あります。

  • MySQLのmysql.sockの場所を/tmp/mysql.sockに変える
  • /tmp/mysql.sockに、/var/lib/mysql/mysql.sockのシンボリックリンクを貼る

後者の方が楽なのでやってみましょう。

# ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
# ll /tmp/mysql.sock
lrwxrwxrwx 1 root root 25  9月 18 23:27 2016 /tmp/mysql.sock -> /var/lib/mysql/mysql.sock

これで、再度WordpressのインストールすればOK

原因

PHPをyumでインストールして、RPMでMySQLをインストールした場合などに起こるようです。
私はまさにそのパターンでハマりました。

10
6
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
10
6