ubuntuにApache2、WordPressを導入し動作確認を行った際、データベース接続エラーとなってしまった。この記事ではデータベース接続確立エラーとなってしまった場合に行うべき対処法を4つ紹介する。
目次
原因
データベース接続エラーはワードプレスとMySQLの接続がうまくいかないことにより起こる。ワードプレス内でのMySQLの設定はwp-config.phpというファイルに記述されており、この情報を元にデータベースへ接続する。
よって、考えられる主な原因は
- wp-config.php の記述ミス
- MySQL自体の設定ミス
- サーバー自体の問題
の3つである。
データベース接続確立エラーの対処法
- wp-config.php に記述ミスがないか確認
- wp-config.php のMySQL のホスト名にループバックアドレスを指定する
- MySQLのパスワードを再設定する
- Mysqlの認証プラグインを変更する
wp-config.php に記述ミスがないか確認
まずは、基本的なところではあるが、 wp-config.php に記述ミスがないかを確認する。 wp-config.php は wordpressディレクトリのすぐ下の階層である
/wordpress/wp-config.php
に存在する。
このファイルを開くと
// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define( 'DB_NAME', 'データベース名' );
/** MySQL database username */
define( 'DB_USER', 'データベースユーザー名' );
/** MySQL database password */
define( 'DB_PASSWORD', 'データベースパスワード' );
/** MySQL hostname */
define( 'DB_HOST', 'ホスト名(localhostとか)' );
と記載されているので、これらの情報を確認する。
次に実際にこれらの値でMySQLにアクセスすることができるかを以下のコマンドで確認する。
mysql -u ユーザー名 -h ホスト名 データベース名 -p
wp-config.php のMySQL のホスト名にループバックアドレスを指定する
wp-config.php ファイルの “MySQL hostname” を
define( 'DB_HOST', 'localhost' );
↓
define( 'DB_HOST', '127.0.0.1' );
のようにホスト名をループバックアドレスに変更する。
MySQLのパスワードを再設定する
rootユーザでログインすることができても、一般ユーザーだとログインすることができないことがあるらしい。
まず、rootユーザーでログインできることを確認する。
$ su - root
# mysql -u root
次に一般ユーザーでログインできるか確認する。
# su - 一般ユーザー名
$ mysql -u root
これでエラーが出る場合は、以下のコマンド
mysql> set password for root@localhost=password('パスワード');
mysql> flush privileges;
を実行し、 パスワードを再設定すると正常に動作することがあるらしい。
Mysqlの認証プラグインを変更する
自分はこの方法で解決しました。
まず、MySQLにログインし、現在の認証プラグインを確認する。
mysql> SELECT user,plugin, authentication_string from mysql.user;
自分の場合rootの認証プラグインだけが
mysql_native_password
となっていなかった。
そこで、以下のコマンドでrootの認証プラグインを mysql_native_password
に変更したところデータベース接続エラーが解決した。
mysql> alter user 'admin'@'%' identified WITH mysql_native_password by 'password';