Warum erhalte ich den Fehler „Access Denied“, wenn ich die IAM-Authentifizierung verwende, um eine Verbindung zu Amazon RDS für MySQL herzustellen?
Wenn ich über die AWS Identity Access Management (IAM)-Authentifizierung eine Verbindung zu meiner Instance von Amazon Relational Database Service (Amazon RDS) für MySQL herstelle, erhalte ich die Fehlermeldung „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, die 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. Verwende dann die Lösungen, um diesen Fehler zu beheben.
Lösung
Ungenügende IAM-Rollenberechtigungen
Um mithilfe der IAM-Datenbankauthentifizierung eine Verbindung zur Instance von Amazon RDS für MySQL 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.
Stelle sicher, dass du die richtige Ressourcen-ID verwendest und nicht nur einen Amazon-Ressourcennamen (ARN) angibst. Gehe wie folgt vor, um die Ressourcen-ID für die DB-Instance zu finden:
- Öffne die Aurora- und RDS-Konsole.
- Wähle im Navigationsbereich Datenbanken aus.
- Wähle dann die Registerkarte Konfigurationen aus.
Hinweis: Die Ressourcen-ID befindet sich im Abschnitt Konfiguration. Weitere Informationen findest du unter Erstellen und Verwenden einer IAM-Richtlinie für den IAM-Datenbankzugriff.
Wenn du eine SCP-Richtlinie verwendest, stelle sicher, dass die Richtlinie Verbindungen zur DB-Instance zulässt. Weitere Informationen findest du unter Erstellen, Aktualisieren und Löschen von Service-Kontrollrichtlinien.
IAM-Authentifizierung aktivieren
Standardmäßig ist die IAM-Authentifizierung für Datenbank-Instances deaktiviert. Überprüfe die Konfigurationseinstellungen für die Instance von Amazon RDS für MySQL oder den Aurora-DB-Cluster und stelle sicher, dass die IAM-Authentifizierung aktiviert ist.
Hinweis: Wenn du Sofort anwenden wählst, werden alle ausstehenden Änderungen sofort und nicht während eines Wartungsfensters wirksam. Diese Aktion kann die Instance von Amazon RDS für MySQL für einen längeren Zeitraum unterbrechen. Weitere Informationen findest du unter [Verwenden der Einstellung „Sofort anwenden“](http://Using the schedule modifications setting).
Falsch konfigurierte(r) Datenbankbenutzer:in
Das AWSAuthenticationPlugin-Plug-in authentifiziert Benutzer in Amazon RDS für MySQL. Verwende AWSAuthenticationPlugin, um über die IAM-Authentifizierung eine Verbindung zur Instance von Amazon RDS für MySQL herzustellen.
Führe den folgenden Befehl aus, um dich zu vergewissern, dass dieses Plug-in deiner IAM-Rolle zugeordnet ist:
select user,plugin,host from mysql.user where user like '%db-user-name%';
Hinweis: Ersetze db-user-name durch deinen 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 richtigen Berechtigungen für den Zugriff auf die angegebene Datenbank verfügst.
Verwende den folgenden Befehl, um die einem/einer Benutzer:in erteilten Berechtigungen anzuzeigen:
show grants for <user>;
Hinweis: Ersetze user durch den Benutzernamen.
Verwende den folgenden Befehl, um einem/einer anderen Benutzer:in Berechtigungen zu erteilen:
grant select on <mydb>.<mytable> to <user>;
Hinweis: Ersetze mydb durch den Namen deiner Datenbank-Instance, mytable durch deinen Tabellennamen und user durch deinen Benutzernamen.
Weitere Informationen findest du unter GRANT statement (GRANT-Anweisung) auf der MySQL-Website.
Falsche Verbindungszeichenfolge
Um eine Verbindung zur Datenbank von Amazon RDS für MySQL herzustellen, verwende den Parameter --enable-cleartext-plugin in der Verbindungszeichenfolge. Der Parameter --enable-cleartext-plugin fungiert als Authentifizierungstoken. Daher musst du AWSAuthenticationPlugin verwenden, wenn du eine Verbindung zur Datenbank herstellst und den/die Datenbankbenutzer:in konfigurierst. Wenn du das AWSAuthenticationPlugin nicht richtig konfigurierst, erhältst du den Fehler Access Denied, wenn du über die IAM-Authentifizierung eine Verbindung zur Datenbank herstellst.
Verwende das folgende Beispiel für eine Verbindungszeichenfolge:
mysql -h <endpoint> -P 3306 --enable-cleartext-plugin --user=RDSConnect --password=$
Hinweis: Ersetze endpoint durch den Hostnamen der DB-Instance, auf die du zugreifen möchtest.
Wenn du den MariaDB-Client verwendest, ist der Parameter --enable-cleartext-plugin nicht erforderlich. Speichere das Token stattdessen zuerst in einer Umgebungsvariablen. Verwende dann Umgebungsvariablen, wenn du eine Verbindung zur MySQL-DB-Instance herstellst.
Siehe folgendes Beispiel:
RDSHOST="rdsmysql.123456789012.us-west-2.rds.amazonaws.com"TOKEN="$(aws rds generate-db-auth-token --hostname $RDSHOST --port 3306 --region us-west-2 --username db-user-name)" mysql --host=$RDSHOST --port=3306 --enable-cleartext-plugin --user=db-user-name --password=$TOKEN
Weitere Informationen zur Verwendung einer Umgebungsvariable, um eine Verbindung zu einer MySQL-DB-Instance herzustellen, findest du unter Verbindung zu einer DB-Instance herstellen.
Ähnliche Informationen
IAM-Datenbankauthentifizierung
IAM-Datenbankauthentifizierung für MariaDB, MySQL und PostgreSQL
- Themen
- Database
- Sprache
- Deutsch
Ähnliche Videos

