フリーランスのためのネットビジネス専門学校 ネットで独立開業を目指す人を応援
フリーランスのためのネットビジネス専門学校 ネットで独立開業を目指す人を応援

「データベース接続確立エラー」が出た時の原因まとめ

データベース接続確立エラーとは

wordpress側からDBにアクセスする時に接続できないのが原因で出てしまうエラー
DB移行する時にこの問題にぶち当たることが多いので原因をまとめました。
またエラーに遭遇したら追記するかもです

原因

wp-config.phpの設定がおかしい

cat wp-config.php |grep DB_

このコマンドを入力すればどのユーザーやパスワードでMysqlに接続しに行こうとしているのかがわかる
wp-config.phpの場所がわからないときは

find / -name wp-config.php

これで検索しよう
もし入れなかったら設定がおかしいので、ユーザー名、DB名、パスワードなどがあっているか確かめる

DBのユーザーに権限がない

wp-config.phpの設定はあっていて、Mysqlに入ることはできる。
だけどDBに書き込む権限がないため、エラーが出てしまう

show grants for 'user'@'localhost';

これでどの権限が振られているか確かめる。
権限が振られていなかったら

GRANT ALL PRIVILEGES ON db.* TO 'user'@'localhost';

これで指定したDBに対して全ての権限が与えられ、接続できるはず。
しかしセキュリティのことを考えると、全部の権限を与えるのは不安。
wordpressのMysqlユーザーに必要な最低限の権限は
SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER
らしいので、面倒でなければこちらを設定した方がいいかと。

nginxにルートディレクトリの実行権限がない

chown -R user: /var/www/rootdirectry

nginx.confに設定したuserに権限を付与しないと、ルートディレクトリにアクセスできず権限エラーが起こる

my.cnfのsockと合わせなくちゃいけない

mysql.sockの場所がwp-config.phpに書いてあるpathと違うため起こる。

mysql.sockの場所は、以下のコマンドを叩いて確認

mysql_config --socket

ここで出てきたディレクトリをwp-config.phpに設定する。

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

さいごに

これをwp-config.phpに足すとデバッグモードになりブラウザでバグが確認できたりdebug.logが出力されたりする。
debug.logはphpの実行権限がないと出力されず自動的にできないのであらかじめ権限をつけてからのdebug.logを作ること。

define('WP_DEBUG', true)
define('WP_DEBUG_LOG', true); //debug.logファイルに記録
define('WP_DEBUG_DISPLAY', false);

データベースえらーは色々確認することがあって面倒いです

[紹介元] WordPressタグが付けられた新着投稿 – Qiita 「データベース接続確立エラー」が出た時の原因まとめ

コメント

記事に戻る

コメントを残す