2026年5月30日
2026年5月30日
MySQLのACCESS DENIEDエラーを解決する方法
はじめに
MySQLから ACCESS DENIED エラーが出たとき、何が原因かを特定し、適切な解決策を見つけることは重要です。このエラーは、ユーザー名やパスワードのミス、権限不足、設定ファイルの問題などによって発生します。
症状・背景
このテーマが必要になる主な場面:
- ローカルまたは遠隔地からMySQLに接続しようとしたときに ACCESS DENIED エラーが表示される。
- Webアプリケーション(例: WordPress)でデータベースアクセスを試みるときエラーメッセージが出る。
手順・設定方法
ステップ1: ログイン情報と権限確認
まず、ユーザー名とパスワードが正しいことを確認します。また、そのユーザーが持っている必要最低限の権限も確認しましょう。
# MySQLを起動している状態で以下のコマンドを使用します。
mysql -u root -p
# パスワード入力後、次のコマンドで権限を確認します。
SHOW GRANTS FOR 'your_username'@'localhost';
ステップ2: 設定ファイルの確認
MySQLの設定ファイル(my.cnf)を確認し、無効なユーザー名やパスワードが設定されていないかチェックします。
# /etc/my.cnf または ~/.my.cnf ファイルを開きます。
vim /etc/my.cnf
# [mysqld] セクションでユーザー認証関連のパラメータを確認します。
[mysqld]
user=mysql
datadir=/var/lib/mysql
ステップ3: 既存のユーザーレコードの修正
もし、ユーザー情報が誤っている場合や権限が不足している場合は、以下のように修正します。
# ユーザーを削除し、再作成して新しいパスワードを設定します。
DROP USER 'your_username'@'localhost';
CREATE USER 'your_username'@'localhost' IDENTIFIED BY 'new_password';
# 新しいユーザーに必要な権限を与えます。
GRANT ALL PRIVILEGES ON *.* TO 'your_username'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
ステップ4: 実践/トラブルシュート/監視
エラーが修正されたかどうかを確認します。また、定期的に権限設定や接続ログをチェックすることで、同じ問題が再発しないようにします。
# 現在のユーザー情報を確認します。
SELECT USER();
# 接続ログを確認します(例: MySQL 5.7以降)。
SHOW BINARY LOGS;
注意事項
- パスワードは暗号化されていない状態で設定ファイルに記載しないようにしてください。
- 新しいパスワードは強固なものにすることを忘れないでください。
- セキュリティ上の注意: ユーザー名やパスワードはできるだけ安全な場所(環境変数など)から読み込むようにしましょう。
まとめ
1. ユーザー名とパスワードの確認: 正しい情報を確認します。
2. 設定ファイルの確認: 設定が正しくない場合に修正します。
3. 権限の修正: 必要な権限を与えるか、不要な権限を削除します。
4. 定期監視: 問題が再発しないように定期的にチェックします。
関連記事: