MySQL 1045エラーは通常、WordPressからMySQLデータベースにアクセスしようとした際に発生するものです。パスワードが正しくなかったり、必要な権限を持っていなかったりすると、サーバーはそのアクションを実行する権限がないと判断し、リクエストを拒否します。
このエラーを解決する方法は複数あり、例えばパスワードのリセット、ユーザー権限やポートの確認などで解決可能です。
以下、MySQL 1045エラーを掘り下げ、主な原因についてご説明します。その後、4つの解決方法を見ていきましょう。
MySQL 1045エラーとは
このエラーの形式はさまざまですが、今回はわかりやすく「MySQL 1045エラー」とします。時には「Error 1045 (28000) access denied for user root localhost」というように表示されることもあります。
これは通常、WordPressからMySQLデータベースにアクセスしようとすると発生するエラーです。MySQLは、WordPressサイトのコンテンツへのアクセス、または追加や管理に使用されるデータベースシステムです。
MySQLを使用する主なデータベースには、MariaDBとSQLiteが挙げられます。ちなみに、MongoDBはスキーマを使用しないNoSQLデータベース。そのため、1045エラーが発生することはありません。
このエラーメッセージが表示される場合、localhostからデータベースにアクセスする権限がないことを意味します。パスワードやユーザー名に誤りがあったり、必要な権限を持っていなかったりすることが考えられます。
MySQL 1045エラーの原因
MySQL 1045エラーの原因には、以下のようなものが考えられます。
- 必要な権限が付与されていない─WordPressに必要な権限がない場合、MySQLデータベースへのアクセスは拒否されます。
- ユーザーが存在しない─ サーバーにユーザーとして登録されていないこともあります(データベースに存在を知られていない)。
- ログイン認証に誤りがある─単にパスワードやユーザー名を間違えているという可能性も。複数のホストを利用している場合は、特にパスワードを混同してしまうのはよくあることです。
- ホストが異なっている─接続するホストを指定しないと、MySQLはlocalhostに接続しようとします。あるいは、別のホストまたはポートに接続しようとしている可能性があります。
- Bashによる妨害─パスワードの特殊文字はBashによって変換されてしまうことも。この場合は、パスワードをシングルクォートで囲むという解決策があります。
- SSLを使用していない ─データベースにアクセスするには、SSL(Secure Sockets Layer)が必要になります。有効なSSL証明書を持っていない場合は、エラーが発生します。
MySQL 1045エラーの原因を特定したら、あとは解決するのみ。エラーを速やかに解消して、作業を再開しましょう。
MySQL 1045エラーの解決策(4通り)
MySQL 1045エラーの主な原因を押さえたら、早速解決策を見ていきましょう。
1. ユーザー権限を確認する
まず考えられる原因として、rootユーザー(root権限を持つユーザーアカウント)に必要な権限が付与されていない可能性があります。したがって、まずは権限を確認しましょう。
ターミナルを開き、以下を実行します。
ssh username@ipaddress
ログイン完了後、MySQLプロンプトから以下のコマンドを実行します。
mysql -uroot -p
次に、このコマンドですべての権限を付与します。
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'password';
あるいは、phpMyAdminを使用してユーザー権限を確認することも。ホスティングアカウントにログインし、ユーザーアカウントを開いてください。
Kinstaのお客様の場合は、MyKinstaにログインしたら「WordPressサイト」をクリックし、権限を確認したいサイトを選択します。「情報」画面の「データベースへのアクセス」セクションまでスクロールしてください。
「phpMyAdminを開く」をクリックし、ユーザー名とパスワードを入力してデータベースにログインします。ログイン後は、「Users」タブからすべてのMySQLユーザーアカウントを管理できます。
利用しているホスティングサービスを問わず、データベース内で該当のユーザーを見つけて、「Edit Privileges」(権限の編集)を選択し、付与されている権限を確認しましょう。
必要な権限を持っていない場合は、該当する権限にチェックを入れて付与してください。「Go」をクリックして変更を適用すれば完了です。データベースに再度アクセスし、エラーが解消されているかどうかを確認します。
2. ユーザー名とパスワードを見直す
一見拍子抜けしてしまうような解決策ですが、MySQL 1045エラーは、ログイン認証情報の誤りが原因かもしれません。これは、wp-config.phpファイルを参照して確認できます。
ホスティングサービスのコントロールパネルにログインし、ファイルマネージャーにアクセスするか、SFTP経由でサイトに接続します。
後者の場合、まずサイトのルートディレクトリを見つけます(通常はpublic_html)。この中にwp-config.phpファイルが格納されているはずです。
ファイルを開いて、DB_USERとDB_PASSWORDが正しい値になっているかを確認しましょう。ユーザー名は「root」、パスワードはインストール時に設定したものになっていればOKです。
パスワードを忘れてしまった場合は、cPanelにアクセスし、「データベース」>「MySQL」をクリックしてください。Kinstaのお客様は、MyKinstaの「情報」画面で「データベースへのアクセス」セクションを確認します。
3. パスワードをリセットする
データベースのパスワードがわからなくなってしまった場合、パスワードをリセットしてMySQLにアクセスし、エラーを解消することもできます。まずは、phpMyAdminにアクセスしましょう。
次に、画面左側の項目の中から、WordPressのデータベースを選択します。
サイトをスムーズに運営するためのデータを含んだ、テーブルの一覧が表示されます。例えば、wp_commentsやwp_postsなど。
wp_usersをクリックすると、ユーザー名、メールアドレス、パスワードなどの基本的なユーザー情報が表示されます。変更したいユーザーリストを見つけて、「Edit」をクリックしましょう。
これで、ユーザーアカウントのすべての情報を変更することができます。
ホスティングサービスを問わず、「user_pass」セクションに注目しましょう。ここに現在のデータベースのパスワードが表示されます。
パスワードを変更するには、テキストエリアをクリックし、パスワードを削除して新たなパスワードを入力します。
「user_pass」エリアでは、「Function」ドロップダウンメニューから「MD5」を選択すると、パスワードが暗号化され、セキュリティを強化することができます。最後に、画面下部の「Go」をクリックして新しいパスワードを保存すればOKです。
4. MySQLサーバーが正しいポートをリッスンしているか確認する
MySQL 1045エラーの簡単な解決策として、サーバーが正しいポートをリッスンしているかどうかを確認することも有効です。ただし、まずはMySQLが起動していることを確認してください。
以下のコマンドで、サーバーの状態を確認できます。
systemtl status MySQL
サーバーが稼動していない場合は、次のコマンドでサーバーを起動します。
systemtl start MySQL
MySQLのデフォルトポートは3306です。MySQLがインストールされているサーバーで、ターミナルまたはコマンドプロンプトを開きます。
次に、以下のコマンドを使ってサーバーに接続してください。
mysql -username -password
以下のコマンドで、MySQL サーバがリッスンしているポート番号を表示します。
SHOW VARIABLES LIKE ‘port’:
ポートパラメータは、この時点または設定ファイルで変更可能です。その後、MySQLサーバーを再起動して変更を適用しましょう。
まとめ
サイトの重要な変更を妨げるWordPressエラーには、イライラさせられるもの。MySQL 1045エラーは、データベースにアクセスできなくなってしまうため、特に厄介です。幸い、解決方法はシンプルです。
手始めに、データベースへのアクセスに必要な権限を持っているかどうかの確認。また、単にユーザー名とパスワードに誤りがある可能性も考えられます。パスワードをリセットしたり、MySQLサーバーが正しいポートをリッスンしているかどうかをチェックしたりするのも有効です。
Kinstaでは、すべてのプランで業界最高水準のカスタマーサポートを提供しているため、エラーに遭遇してもトラブルシューティングが簡単です。また、Kinstaのデータベースホスティングでは、世界25箇所のデータセンターと260+のコンテンツデリバリーネットワーク(CDN)ロケーションが利用可能。データベースを高速、安全、かつスケーラブルに運用できます。詳しくはこちらをご覧ください。