Amazon Aurora MySQL 互換エディションの DB クラスターに対して認証をしたいと考えていますが、「Access Denied」(アクセス拒否) エラーが表示されます。
Aurora MySQL 互換 DB クラスターに対して認証するには、次のいずれかのオプションを使用できます。
「Access Denied」(アクセス拒否) エラーは通常、正しくないユーザー名またはパスワードが入力された場合に発生します。ただし、このエラーの原因として、次のようなものも考えられます。
このエラーの詳細については、MySQL ドキュメントの「Access denied」(アクセス拒否) を参照してください。
DB インスタンスが現在、[AVAILABLE] (使用可能) 状態であることを確認します。詳細については、DB インスタンスのステータスに関する Amazon Relational Database Service (Amazon RDS) および Aurora のドキュメントを参照してください。また、「Amazon RDS DB インスタンスに接続する際の問題を解決するにはどうすればよいですか?」も参照してください。
正しくないパスワード
データベースへの接続を試みる際には、正しいユーザー名とパスワードを入力していることを確認してください。パスワードには特殊文字を使用しないでください。詳細については、「Amazon RDS DB インスタンスのプライマリユーザーパスワードをリセットするにはどうすればよいですか?」を参照してください。
正しくないユーザー名
ユーザーが存在するかどうかを確認します。
mysql> SELECT user FROM mysql.user WHERE User='username';
ユーザーが存在しない場合は、新しいユーザーを作成します。
mysql> CREATE USER 'username'@'%' IDENTIFIED BY 'new-password-here';
mysql> FLUSH PRIVILEGES;
詳細については、「プライマリユーザーアカウント特権」を参照してください。
誤ったホストからの接続
DB インスタンスへの接続を試みる際には、必ず正しいホスト (-h フラグ付き) とポートを指定してください。Amazon RDS コンソールのインスタンスページを確認して、Amazon RDS のホスト名とポートを確認します。詳細については、「Amazon Aurora DB クラスターへの接続」を参照してください。
ユーザーは存在するが、接続するための許可クライアントがクライアントホストに付与されていない
MySQL が次からの接続を許可しているホストユーザー/ホストを確認します。
mysql> SELECT host, user FROM mysql.user WHERE User='username';
その後、正しいホスト (クライアント IP) を持つユーザー、または任意の可能な IP アドレスと一致する % (ワイルドカード) を持つユーザーを作成します。
mysql> CREATE USER 'dbuser'@'%' IDENTIFIED BY 'new-password-here';
SSL が必須だが、クライアントは SSL を使用していない
DB インスタンスで次のクエリを実行して、SSL が強制されているユーザーがいるかどうかを確認します。
mysql> SELECT * FROM mysql.user WHERE ssl_type <> '';
ユーザーに SSL が強制されている場合は、SSL を使用して接続する必要があります。詳細については、「SSL/TLS を使用した DB クラスターへの接続の暗号化」を参照してください。
重複ユーザー
同じユーザー名のユーザーがいるかどうかを確認します。
この問題を解決するには、別のユーザー (重複プライマリユーザー) または他のユーザーを DROP するための許可を持つユーザーを使用してログインします。セカンダリユーザーがドロップされると、最初のユーザーは通常どおり接続できます。
詳細については、「MySQL が実行されている Amazon RDS DB インスタンスの別のプライマリユーザーを作成する方法を教えてください」を参照してください。
パスワードの特殊文字が Bash によって変換されている
パスワードを一重引用符で囲むことによって、Bash が特殊文字を解釈しないようにします。
接続パケットに正しい情報が含まれていない
接続パケットを取得するには、connect_timeout 秒を超える時間がかかります。DBA と話し合うことで、この DB パラメータの値を調整して、クエリとワークロードをより良く理解できます。
max_allowed_packet の変数の値が小さすぎるか、または DB インスタンスに割り当てたメモリよりも多くのメモリがクエリに必要
max_allowed_packet の値は、デフォルトでは小さく設定されています。これにより、この値では大きなパケット、場合によっては正しくないパケットをキャッチできます。大きな BLOB 列や長い文字列を使用している場合は、max_allowed_packet の値を大きくします。詳細については、「Best practices for configuring parameters for Amazon RDS for MySQL」(Amazon RDS for MySQL の設定パラメータのベストプラクティス) セクションを参照してください。
接続するには、「ユーザーが IAM 認証情報を使用して Amazon RDS MySQL DB インスタンスに認証できるようにするにはどうすればよいですか?」を参照してください。
接続できない場合は、「IAM 認証を使用して Amazon RDS for MySQL に接続しようとすると、アクセス拒否エラーが発生するのはなぜですか?」を参照してください。
接続するには、「Amazon RDS Proxy を使用して、Amazon RDS MySQL DB インスタンスまたは Aurora MySQL DB クラスターに接続する方法を教えてください」を参照してください。
接続できない場合は、「RDS Proxy を使用して Amazon RDS DB または Amazon Aurora DB インスタンスに接続できないのはなぜですか」を参照してください。
Amazon Aurora MySQL DB クラスターへの接続
MariaDB、MySQL、および PostgreSQL の IAM データベース認証
パラメータグループを使用する
VPC のパブリックサブネットまたはプライベートサブネットを使用する Amazon RDS DB インスタンスへの接続問題を解決するには、どうすれば良いですか?