Quelle est la raison pour laquelle l'hôte 'host_name' est bloqué dans MySQL?

12

Lorsque j'utilise un mot de passe incorrect pour me connecter au serveur mysql, et que le nombre de tests est supérieur à max_connect_errors, et je trouve que le Aborted_connectsproblème se pose également en tant que nombre que je teste, mais l'hôte n'est toujours pas bloqué.

Il en va de la Aborted_connectsplus la max_connect_errorsnom_hôte puis est bloqué?

user3157
la source

Réponses:

8

À ce stade, vous devrez peut-être exécuter FLUSH HOSTS et voir si cela se débloque.

La documentation MySQL dit ceci à propos de FLUSH HOSTS:

  • Vide les tables de cache d'hôte. Vous devez vider les tables d'hôtes si certains de vos hôtes changent d'adresse IP ou si vous obtenez le message d'erreur L'hôte 'host_name' est bloqué. Lorsque plus de max_connect_errors se produisent successivement pour un hôte donné lors de la connexion au serveur MySQL, MySQL suppose que quelque chose ne va pas et bloque l'hôte de toute demande de connexion supplémentaire. Le vidage des tables d'hôtes permet de nouvelles tentatives de connexion à partir de l'hôte. Voir Section C.5.2.6, «L'hôte 'host_name' est bloqué». Vous pouvez démarrer mysqld avec --max_connect_errors = 999999999 pour éviter ce message d'erreur.

Pourquoi un hôte devrait-il être bloqué pour commencer ??

Selon la documentation MySQL :

Si vous obtenez l'erreur suivante, cela signifie que mysqld a reçu de nombreuses demandes de connexion de l'hôte 'host_name' qui ont été interrompues au milieu: l'hôte 'host_name' est bloqué en raison de nombreuses erreurs de connexion. Débloquer avec 'mysqladmin flush-hosts' Le nombre de requêtes de connexion interrompues autorisées est déterminé par la valeur de la variable système max_connect_errors. Après l'échec des demandes de max_connect_errors, mysqld suppose que quelque chose ne va pas (par exemple, quelqu'un essaie de s'introduire) et bloque l'hôte de toute autre connexion jusqu'à ce que vous exécutiez une commande mysqladmin flush-hosts ou émettiez une instruction FLUSH HOSTS. Voir Section 5.1.3, «Variables système du serveur».

Par défaut, mysqld bloque un hôte après 10 erreurs de connexion. Vous pouvez ajuster la valeur en démarrant le serveur comme ceci:

shell> mysqld_safe --max_connect_errors=10000 &

Si vous obtenez ce message d'erreur pour un hôte donné, vous devez d'abord vérifier qu'il n'y a rien de mal avec les connexions TCP / IP de cet hôte. Si vous rencontrez des problèmes de réseau, il ne sert à rien d'augmenter la valeur de la variable max_connect_errors.

RolandoMySQLDBA
la source
Il ne semble pas que ces erreurs soient enregistrées dans le journal des erreurs MySQL normal. Existe-t-il un moyen d'afficher un journal des erreurs de connexion bloquant l'hôte? J'ai également noté le "successivement" ci-dessus. Alors, juste besoin d'une connexion réussie entre les deux? Ou devrais-je simplement poser une nouvelle question?
Marc L.
1

L'une des causes d'un tel blocage est le fait qu'une personne aléatoire sur l'hôte décide de faire une surveillance de MySQL et configure un telnet sur le port MySQL sur le serveur distant. Avec un nombre suffisant d'appels telnet, l'hôte ne peut plus accéder à ce serveur MySQL. Contrairement à certains serveurs, MySQL ne débloque pas automatiquement l'accès après un laps de temps raisonnable: l'administrateur du serveur doit frapper MySQL sur la tête.

Richard
la source