Comment résoudre les problèmes lorsque je me connecte à mon instance de base de données Amazon RDS ?
Je souhaite déterminer pourquoi je ne parviens pas à me connecter à mon instance de base de données Amazon Relational Database Service (Amazon RDS).
Brève description
La connexion à votre instance de base de données Amazon RDS peut échouer pour les raisons suivantes :
- La source à partir de laquelle vous vous connectez à l’instance de base de données ne dispose pas d’un accès autorisé dans votre groupe de sécurité, vos listes de contrôle d’accès au réseau (ACL) ou vos pare-feux locaux.
- Le chemin réseau entre l'application cliente et l'instance de base de données est manquant dans la table de routage.
- Vous utilisez un nom DNS ou un point de terminaison erroné pour vous connecter à l’instance de base de données.
- Votre instance de base de données n'est pas accessible au public et vous ne pouvez pas vous connecter via Internet.
- L’instance de base de données Multi-AZ a échoué, et l’instance de base de données secondaire utilise un sous-réseau ou une table de routage qui n’autorise pas les connexions entrantes.
- L'authentification de l'utilisateur n'est pas correcte.
Résolution
Remarque : si des erreurs surviennent lorsque vous exécutez des commandes de l'interface de la ligne de commande AWS (AWS CLI), consultez la section Résoudre des erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l'AWS CLI.
Pour résoudre les problèmes de connexion de votre instance de base de données Amazon RDS, effectuez les tâches suivantes :
Utiliser le diagnostic automatique
Commencez par utiliser des outils automatisés pour identifier rapidement les problèmes de connexion.
Procédez comme suit :
- Pour exécuter l'outil de diagnostic automatique, utilisez la commande start-automation-execution d’AWS Systems Manager suivante :
Remarque : remplacez EC2-INSTANCE-ID par votre ID d'instance EC2 et DB-INSTANCE-NAME par votre identifiant d'instance RDS.aws ssm start-automation-execution \ --document-name "AWSSupport-TroubleshootConnectivityToRDS" \ --parameters "InstanceId=EC2-INSTANCE-ID,DBInstanceIdentifier=DB-INSTANCE-NAME" - Pour vérifier les résultats de l'automatisation, exécutez la commande get-automation-execution suivante :
Remarque : remplacez EXECUTION-ID par l'ID d'exécution de l'étape 1.aws ssm get-automation-execution \ --automation-execution-id EXECUTION-ID
Pour obtenir des instructions sur la procédure d’exécution du dossier d’exploitation et des détails sur les éléments qu'il vérifie, consultez la section AWSSupport-TroubleshootConnectivityToRDS.
Vérifier l'état de l'instance de base de données
Vérifiez que votre instance de base de données est disponible et prête à être connectée.
Procédez comme suit :
- Pour vérifier l'état de votre instance de base de données, exécutez la commande describe-db-instances suivante :
Remarque : remplacez DB-INSTANCE-NAME par l'identifiant de votre instance Amazon RDS.aws rds describe-db-instances \ --db-instance-identifier DB-INSTANCE-NAME \ --query 'DBInstances[*].DBInstanceStatus' - Attendez que le statut indique Disponible avant de tenter de vous connecter. Les instances nouvelles ou redémarrées peuvent prendre jusqu'à 20 minutes pour être disponibles.
Vérifier les règles du groupe de sécurité
Les groupes de sécurité contrôlent l'accès réseau à votre instance Amazon RDS. Vérifiez qu'ils autorisent le trafic provenant de votre source.
Procédez comme suit :
- Pour identifier les groupes de sécurité associés à votre instance Amazon RDS, exécutez la commande describe-db-instances suivante :|
Remarque : remplacez DB-INSTANCE-NAME par l’identifiant de l'instance RDS.aws rds describe-db-instances \ --db-instance-identifier DB-INSTANCE-NAME \ --query 'DBInstances[*].VpcSecurityGroups[*].VpcSecurityGroupId' - Pour vérifier les règles entrantes pour chaque groupe de sécurité, exécutez la commande describe-security-groups suivante :
Remarque : remplacez SECURITY-GROUP-ID par l'ID de chaque groupe de sécurité de l'étape 1.aws ec2 describe-security-groups \ --group-ids SECURITY-GROUP-ID \ --query 'SecurityGroups[*].IpPermissions' - Pour ajouter une règle autorisant votre adresse IP, exécutez la commande authorize-security-group-ingress suivante :
Remarque : remplacez SECURITY-GROUP-ID par l'ID de votre groupe de sécurité. Remplacez DATABASE-PORT par le port de votre base de données (3306 pour MySQL, 5432 pour PostgreSQL). Remplacez YOUR-IP-ADDRESS par votre adresse IP.aws ec2 authorize-security-group-ingress \ --group-id SECURITY-GROUP-ID \ --protocol tcp \ --port DATABASE-PORT \ --cidr YOUR-IP-ADDRESS/32
Vérifier les règles ACL du réseau
Les listes de contrôle d'accès au réseau (ACL) fournissent une sécurité au niveau du sous-réseau. Vérifiez qu'elles autorisent le trafic de base de données.
Procédez comme suit :
- Pour identifier la liste de contrôle d'accès au réseau (ACL) de votre sous-réseau Amazon RDS, exécutez la commande describe-network-acls suivante :
Remarque : remplacez SUBNET-ID par votre ID de sous-réseau RDS :aws ec2 describe-network-acls \ --filters "Name=association.subnet-id,Values=SUBNET-ID" \ --query 'NetworkAcls[*].NetworkAclId' - Pour vérifier les règles de la liste de contrôle d'accès au réseau (ACL), exécutez la commande describe-network-acls suivante :
Remarque : remplacez NETWORK-ACL-ID par l'ID de l’ACL réseau de l'étape 1.aws ec2 describe-network-acls \ --network-acl-ids NETWORK-ACL-ID \ --query 'NetworkAcls[*].Entries' - Vérifiez que les règles entrantes autorisent le trafic sur le port de votre base de données et que les règles sortantes autorisent les ports éphémères (1024-65535).
Vérifier la configuration de la table de routage
Les tables de routage dirigent le trafic réseau. Vérifiez qu'elles fournissent un routage approprié à votre instance Amazon RDS.
Procédez comme suit :
- Pour vérifier la table de routage de votre sous-réseau Amazon RDS, exécutez la commande describe-route-tables suivante :
CMD
Remarque : remplacez SUBNET-ID par votre ID de sous-réseau RDS. - Pour un accès public, vérifiez qu'il existe un itinéraire vers une passerelle Internet ([IP_ADDRESS]).
- Pour un accès privé, vérifiez les itinéraires vers les passerelles NAT, les connexions d'appairage de VPC ou les passerelles VPN, selon le cas.
Pour en savoir plus, consultez Comment résoudre les problèmes liés aux adresses IP de mes instances de base de données Amazon RDS ?
Vérifier les échecs de résolution DNS
Vérifiez que la résolution de votre point de terminaison Amazon RDS correspond à la bonne adresse IP.
Procédez comme suit :
-
Pour tester la résolution DNS depuis votre client, exécutez la commande suivante :
nslookup RDS-ENDPOINTRemarque : remplacez RDS-ENDPOINT par le point de terminaison de votre instance RDS.
-
Pour tester avec la commande dig, exécutez la commande suivante :
dig RDS-ENDPOINT -
Si la résolution DNS échoue, vérifiez vos paramètres DNS Amazon VPC ou utilisez un autre serveur DNS.
Tester la connectivité réseau
Vérifiez la connectivité réseau à votre instance RDS avant de tester l'authentification de la base de données.
Procédez comme suit :
-
Pour tester la connectivité à votre instance Amazon RDS, exécutez la commande telnet suivante :
telnet RDS-ENDPOINT DATABASE-PORTRemarque : remplacez RDS-ENDPOINT par votre point de terminaison RDS et DATABASE-PORT par votre port de base de données.
-
Pour effectuer un test avec netcat, exécutez la commande suivante :
nc -zv RDS-ENDPOINT DATABASE-PORT -
Si la connexion aboutit, le problème est probablement lié à l'authentification. En cas d'échec, le problème est lié au réseau.
Pour en savoir plus, consultez Résoudre les problèmes de connectivité réseau aux bases de données Amazon RDS à l'aide de l’Analyseur d'accessibilité Amazon VPC
Authentification de base de données IAM
Vérifiez les informations d'identification et la méthode d'authentification de votre base de données.
Procédez comme suit :
- Pour tester l'authentification par mot de passe pour MySQL, exécutez la commande suivante :
Remarque : remplacez RDS-ENDPOINT par votre point de terminaison, DATABASE-PORT par votre port et USERNAME par le nom d'utilisateur de votre base de données.mysql -h RDS-ENDPOINT -P DATABASE-PORT -u USERNAME -p - Pour tester l'authentification par mot de passe pour PostgreSQL, exécutez la commande suivante :
Remarque : remplacez RDS-ENDPOINT, DATABASE-PORT, USERNAME et DATABASE-NAME par vos valeurs.psql -h RDS-ENDPOINT -p DATABASE-PORT -U USERNAME -d DATABASE-NAME - Pour réinitialiser le mot de passe principal si nécessaire, exécutez la commande modify-db-instance suivante :
Remarque : remplacez DB-INSTANCE-NAME par l'identifiant de votre instance et NEW-PASSWORD par votre nouveau mot de passe.aws rds modify-db-instance \ --db-instance-identifier DB-INSTANCE-NAME \ --master-user-password NEW-PASSWORD \ --apply-immediately
Vérifier les limites de connexion
Vérifiez que votre instance Amazon RDS n'a pas atteint les limites de connexion.
Procédez comme suit :
-
Pour vérifier les connexions actuelles pour MySQL, connectez-vous à votre base de données et exécutez la requête suivante :
SHOW STATUS LIKE 'Threads_connected'; SHOW VARIABLES LIKE 'max_connections'; -
Pour vérifier les connexions actuelles pour PostgreSQL, exécutez la requête suivante :
SELECT count(*) FROM pg_stat_activity; SHOW max_connections; -
Pour vérifier les erreurs de connexion dans MySQL, exécutez la requête suivante :
SHOW STATUS LIKE 'Connection_errors%'; SHOW STATUS LIKE 'Max_used_connections';
Si votre instance Amazon RDS atteint les limites de connexion, procédez comme suit :
-
Pour identifier les connexions inactives qui peuvent être interrompues, exécutez la requête suivante pour MySQL :
SELECT id, user, host, db, command, time, state, info FROM information_schema.processlist WHERE command = 'Sleep' AND time > 300 ORDER BY time DESC; -
Pour mettre fin aux connexions inactives dans MySQL, exécutez la commande suivante :
CALL mysql.rds_kill(CONNECTION-ID);Remarque : remplacez CONNECTION-ID par l'ID de connexion de l'étape 1.
-
Pour augmenter le paramètre max_connections, exécutez la commande modify-db-parameter-group suivante :
aws rds modify-db-parameter-group \ --db-parameter-group-name PARAMETER-GROUP-NAME \ --parameters "ParameterName=max_connections,ParameterValue=NEW-VALUE,ApplyMethod=pending-reboot"Remarque : remplacez PARAMETER-GROUP-NAME par le nom de votre groupe de paramètres et NEW-VALUE par la limite de connexion souhaitée. Un redémarrage est nécessaire après avoir modifié max_connections.
-
Pour appliquer les modifications de paramètres, redémarrez votre instance Amazon RDS. Exécutez la commande reboot-db-instance suivante :
aws rds reboot-db-instance \ --db-instance-identifier DB-INSTANCE-NAMERemarque : remplacez DB-INSTANCE-NAME par l'identifiant de votre instance Amazon RDS.
-
Pour implémenter le regroupement de connexions avec le proxy RDS, exécutez la commande create-db-proxy suivante :
aws rds create-db-proxy \ --db-proxy-name PROXY-NAME \ --engine-family mysql \ --target-group-config DBInstanceIdentifiers=DB-INSTANCE-NAME \ --vpc-subnet-ids SUBNET-ID-1,SUBNET-ID-2 \ --auth AuthScheme=SECRETS,SecretArn=SECRET-ARNRemarque : remplacez PROXY-NAME, DB-INSTANCE-NAME, SUBNET-ID-1, SUBNET-ID-2 et SECRET-ARN par vos valeurs.
Vérifier les limites de connexion spécifiques à l'utilisateur
Procédez comme suit :
-
Pour vérifier les connexions max_user_connections actuelles, exécutez la requête suivante :
SHOW VARIABLES LIKE 'max_user_connections'; -
Pour vérifier les connexions actuelles par utilisateur, exécutez la requête suivante :
SELECT user, COUNT(*) as connection_count FROM information_schema.processlist GROUP BY user ORDER BY connection_count DESC; -
Pour vérifier si un utilisateur spécifique a atteint sa limite de connexion, exécutez la requête suivante :
SELECT user, max_user_connections FROM mysql.user WHERE user = 'USERNAME';Remarque : remplacez USERNAME par le nom d'utilisateur spécifique qui rencontre des problèmes de connexion.
Le paramètre max_user_connections peut empêcher des utilisateurs spécifiques de se connecter, même lorsque les limites de connexion globales ne sont pas atteintes.
Si votre instance Amazon RDS atteint le nombre maximum de connexions utilisateur, procédez comme suit :
- Pour augmenter globalement le paramètre max_user_connections, exécutez la commande modify-db-parameter-group suivante :
Remarque : remplacez PARAMETER-GROUP-NAME par le nom de votre groupe de paramètres et NEW-VALUE par la limite de connexion par utilisateur souhaitée.aws rds modify-db-parameter-group \ --db-parameter-group-name PARAMETER-GROUP-NAME \ --parameters "ParameterName=max_user_connections,ParameterValue=NEW-VALUE,ApplyMethod=immediate" - Pour modifier les limites de connexion pour un compte utilisateur spécifique, exécutez la requête suivante :
Remarque : remplacez USERNAME par le nom d'utilisateur et NEW-LIMIT par la limite de connexion souhaitée pour cet utilisateur.ALTER USER 'USERNAME'@'%' WITH MAX_USER_CONNECTIONS NEW-LIMIT;
Pour plus d'informations, consultez la page Définition des limites de ressources du compte sur le site Web de MySQL.
Vérifier les limites d'erreurs de connexion
Procédez comme suit :
-
Pour vérifier les erreurs max_connect_errors actuelles pour Amazon RDS for MySQL, exécutez la requête suivante :
SHOW VARIABLES LIKE 'max_connect_errors'; -
Pour vérifier si des hôtes sont actuellement bloqués, exécutez la requête suivante :
SELECT * FROM performance_schema.host_cache WHERE SUM_CONNECT_ERRORS > 0; -
Pour vérifier le nombre actuel d'erreurs de connexion pour votre hôte, exécutez la requête suivante :
SELECT HOST, SUM_CONNECT_ERRORS, COUNT_HANDSHAKE_ERRORS, COUNT_AUTHENTICATION_ERRORS FROM performance_schema.host_cache WHERE HOST = 'YOUR-CLIENT-IP';Remarque : remplacez YOUR-CLIENT-IP par l'adresse IP réelle de votre client.
-
Pour vider le cache de l'hôte et débloquer tous les hôtes, exécutez la requête suivante :
FLUSH HOSTS; -
Pour augmenter le paramètre max_connect_errors afin d'éviter tout blocage futur, exécutez la commande modify-db-parameter-group suivante :
aws rds modify-db-parameter-group \ --db-parameter-group-name PARAMETER-GROUP-NAME \ --parameters "ParameterName=max_connect_errors,ParameterValue=NEW-VALUE,ApplyMethod=immediate"Remarque : remplacez PARAMETER-GROUP-NAME par le nom de votre groupe de paramètres et NEW-VALUE par une limite plus élevée, telle que 1000000.
-
Pour vérifier que le changement de paramètre a été appliqué, exécutez à nouveau la requête à partir de l'étape 1 et confirmez la nouvelle valeur.
Pour plus d'informations, consultez la section Comment résoudre l'erreur « Host is blocked because of many connections errors » dans Amazon RDS pour MySQL ?
Informations connexes
Impossible de se connecter à une instance de base de données Amazon RDS
- Langue
- Français
Vidéos associées


Contenus pertinents
- demandé il y a 2 ans
- demandé il y a 9 mois
- demandé il y a 2 ans
- demandé il y a 3 ans