Direkt zum Inhalt

Warum erhalte ich den Fehler „Access Denied“, wenn ich mit der IAM-Authentifizierung versuche, eine Verbindung zu Amazon RDS für MySQL herzustellen?

Lesedauer: 3 Minute
0

Ich möchte die AWS Identity and Access Management (IAM)-Authentifizierung verwenden, um eine Verbindung zu meiner Amazon Relational Database Service (Amazon RDS) für MySQL-Instance herzustellen. Ich erhalte aber den Fehler „Access Denied“.

Kurzbeschreibung

Fehlermeldungen können aufgrund unzureichender IAM-Rollenberechtigungen, deaktivierter IAM-Authentifizierung, Fehlkonfigurationen des Datenbankbenutzers oder eines Fehlers in der Verbindungszeichenfolge auftreten. Möglicherweise erhältst du eine Fehlermeldung der Folgenden ähnelt:

„ERROR 1045 (28000): Access denied for user 'root'@'10.0.4.253' (using password: YES)“

Verwende das AWSSupport-TroubleShootRDSIAMAuthentication-Runbook, um die für die IAM-Authentifizierung mit einer Amazon RDS-Instance erforderliche Konfiguration automatisch zu überprüfen und verwende dann die Lösungen, um diesen Fehler zu beheben.

Lösung

Ungenügende IAM-Rollenberechtigungen

Um mithilfe der IAM-Datenbankauthentifizierung eine Verbindung zu der Amazon RDS für MySQL-Instance herzustellen, musst du Zugriff auf die Aktion rds-db:connect haben. Weitere Informationen findest du unter Erstellen und Verwenden einer IAM-Richtlinie für den IAM-Datenbankzugriff.

Wenn du Service Control Policies (SCPs) verwendest, stelle sicher, dass die Richtlinie Verbindungen zur Datenbank-Instance zulässt. Weitere Informationen findest du unter Erstellen von Organisationsrichtlinien mit AWS Organizations.

IAM-Authentifizierung aktivieren

Standardmäßig ist die IAM-Authentifizierung für Datenbank-Instances deaktiviert. Gehe wie folgt vor, um die IAM-Authentifizierung zu aktivieren:

  1. Öffne die Amazon-RDS-Konsole.
  2. Wähle die Instance aus.
  3. Wähle Ändern.
  4. Wähle für Datenbankauthentifizierung Passwort.
  5. Wähle die IAM-Datenbank-Authentifizierung aus.
  6. Um die Konfigurationseinstellungen zu aktualisieren, wähle Weiter.
  7. Um die Instance zu ändern, wähle Anwenden.

Hinweis: Wenn du bei der Aktualisierung der Cluster-Konfigurationseinstellungen die Option Sofort anwenden wählst, werden alle ausstehenden Änderungen sofort und nicht während eines Wartungsfensters übernommen. Diese Aktion kann zu einem längeren Ausfall der Amazon RDS für MySQL-Instance führen. Weitere Informationen findest du unter Einstellung für Zeitplanänderungen.

Falsch konfigurierter Datenbankbenutzer

Das AWSAuthenticationPlugin verarbeitet die IAM-Authentifizierung für die Amazon RDS für MySQL-Instance. Um zu bestätigen, dass dieses Plugin eine Verbindung zu der IAM-Rolle herstellt, führe den folgenden Befehl aus:

select user,plugin,host from mysql.user where user like '%db-user-name%';

Hinweis: Ersetze db-user-name durch den Datenbank-Benutzernamen.

Beispielausgabe:

+------+-------------------------+------+|
user | plugin | host |
+------+-------------------------+------+
| root | AWSAuthenticationPlugin | % |
+------+-------------------------+------+
1 row in set (0.00 sec)

Wenn die IAM-Rolle einen bestimmten Host verwendet, musst du diesen Hostnamen verwenden. Stelle außerdem sicher, dass du über die Berechtigungen für den Zugriff auf die angegebene Datenbank verfügst.

Verwende den folgenden Befehl, um die einem Benutzer erteilten Berechtigungen anzuzeigen:

show grants for user;

Hinweis: Ersetze user durch den Benutzernamen.

Verwende den folgenden Befehl, um einem anderen Benutzer Rechte zu gewähren:

grant select on mydb.mytable to user;

Hinweis: Ersetze mydb durch den Namen der Datenbank-Instance, mytable durch den Tabellennamen und user durch den Benutzernamen.

Weitere Informationen findest du unter GRANT-Anweisung auf der MySQL-Website.

Falsche Verbindungszeichenfolge

Um eine Verbindung zur Amazon RDS für MySQL-Datenbank herzustellen, verwende die Option --enable-cleartext-plugin in der Verbindungszeichenfolge. Die Syntax --enable-cleartext-plugin fungiert als Authentifizierungstoken, und du musst sie für die Datenbankverbindung und bei der Konfiguration des Datenbankbenutzers verwenden.

Beispiel für eine Verbindungszeichenfolge:

$ mysql -h <endpoint> -P 3306 --enable-cleartext-plugin --user=RDSConnect --password=$

Ähnliche Informationen

Wie erlaube ich Benutzern, sich mit ihren IAM-Anmeldeinformationen bei einer DB-Instance bei Amazon RDS für MySQL zu authentifizieren?

IAM-Datenbankauthentifizierung