🐅
【MYSQL】Failed to connect to database: が出る
エラーログ
Failed to connect to database: (1045, "Access denied for user 'dev_admin'@'172.31.1.129' (using password: YES)")
原因
このエラーは、データベースユーザー名またはパスワードが正しくない場合に発生します。
対処方法
-
AWS Secrets Managerの確認
- Secrets Managerに保存されているユーザー名とパスワードが正しいか確認
- 必要に応じて、以下のようにTerraformコードを修正:
resource "aws_secretsmanager_secret_version" "db_credential" { secret_id = aws_secretsmanager_secret.db_credential.id secret_string = jsonencode({ username = "${var.environment}_${var.DB_USERNAME}" password = var.DB_PASSWORD }) }
-
RDSインスタンスでのユーザー確認
- RDSインスタンスに直接接続し、ユーザーが正しく作成されているか確認
- 必要に応じて、以下のSQLコマンドでユーザーを作成または権限を付与:
CREATE USER 'dev_admin'@'%' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON *.* TO 'dev_admin'@'%'; FLUSH PRIVILEGES;
-
Lambda関数の環境変数確認
- Lambda関数の環境変数が正しく設定されているか確認
- Terraformコードで以下のように設定されていることを確認:
resource "aws_lambda_function" "db_dump" { # 他の設定... environment { variables = { RDS_USER = "${var.environment}_${var.DB_USERNAME}" RDS_PASSWORD = var.DB_PASSWORD # 他の環境変数... } } }
Discussion