Forum Programmation.SQL Connexion impossible à un serveur MySQL

Posté par . Licence CC by-sa
Tags :
0
19
sept.
2014

Bonjour,

J'ai régulièrement le message suivant dans mon application :

Impossible de se connecter : Host 'xxxxxxx' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'

(j'ai bien le nom d'hôte en question, ici remplacé par xxxxxxx)

Le flush-hosts règle bien le problème, cependant je souhaiterais que cela ne se produise pas.

Le serveur MySQL en question héberge les BDD Centreon et tourne sous FAN 2.4 (CentOS)

J'ai été voir le fichier /var/log/mysqld.log mais je ne vois rien concernant des tentatives de connexion avortées…

Auriez-vous une piste à me proposer ?

  • # logs php

    Posté par (page perso) . Évalué à 4.

    Bonjour,
    Il est probable qu'un script ait de mauvaises informations de connexion. Dans le cas du php, tu actives le error_reporting et tu place log_error à On. Ainsi tu auras dans les logs d'erreur du serveur web des "access denied" et le script d'origine

    • [^] # Re: logs php

      Posté par . Évalué à 2. Dernière modification le 19/09/14 à 15:17.

      J'ai déjà :

      error_reporting = E_ALL

      et

      log_error = On

      Je regarde /var/log/httpd/error_log sur le serveur sur lequel tourne PHP et /var/log/mysqld.log sur le serveur de BDD. Regardé-je au bon endroit ?

      J'imagine que les tentatives de connexion qui bloquent l'accès n'émanent pas forcément d'un script PHP.

      C'est plutôt du côté MySQL que je devrais chercher non ?

      • [^] # Re: logs php

        Posté par (page perso) . Évalué à 2.

        C'est plutôt du côté MySQL que je devrais chercher non ?

        A partir de 5.5 tu peux mettre log_warning à 2 pour avoir cette info dans les logs. En dessous c'est mort à moins d'activer les log généraux (qui vous tout logguer y compris les requêtes).

      • [^] # Re: logs php

        Posté par (page perso) . Évalué à 3.

        C'est plutôt du côté MySQL que je devrais chercher non ?

        Non, l'erreur que tu as vient bien des tentatives de connexions à MySQL. Si la machine ne doit écouter que sur localhost, vérifie bien que c'est le cas (et qu'il n'y a pas d'autres machines qui y font des tentatives de connexion). Si la machine doit écouter sur le réseau local, essaye de voir s'il n'y aurait pas des machines qui tentent de d'y connecter. Tu peux aussi essayer de changer le port par défaut, ça donne souvent de bon résultats contre les attaques automatisées.

        « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

        • [^] # Re: logs php

          Posté par . Évalué à 2.

          Non, l'erreur que tu as vient bien des tentatives de connexions à MySQL.

          Oui j'entends bien. Ce que je voulais dire c'est que cela ne vient pas forcément d'un script PHP. Ça peut être une tentative de connexion via le client MySQL en ligne de commande ou MySQL Workbench ou encore autre chose…

          essaye de voir s'il n'y aurait pas des machines qui tentent de d'y connecter.

          Le serveur MySQL qui bloque est le serveur de production base de données Centreon. Le script maison PHP tourne sur le serveur central Centreon de recette.

          Ce n'est pas mon script maison qui provoque le blocage et je ne pense pas que cela vienne d'une connexion manuelle (client MySQL ou MySQL Workbench), j'en déduis (je subodore plutôt…) donc que c'est provoqué par l'application Centreon (de recette) qui tenteraient des connexions infructueuses sur le MySQL Centreon de production (ce qui paraît étonnant, mais possible vu l'expertise toute relative de l'équipe qui a mis en place la solution F.A.N…).

          Je voudrais bien pouvoir en apporter la preuve grâce à un log…

          En tous cas merci pour toutes vos idées. J'y retourne demain à l'aube, vais voir ça…

          • [^] # Re: logs php

            Posté par (page perso) . Évalué à 5.

            Si tu veux un log, je te conseille de faire tourner un tcpdump en filtrant sur le port mysql (tcpdump -i eth0 -w /var/tmp/mysql_port.log port 3306). En plus, tu verras peut-être des problèmes purement réseau au niveau de la connexion TCP qui expliquent pourquoi l'hôte se fait jeter..

            « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

          • [^] # Re: logs php

            Posté par . Évalué à 2.

            donc que c'est provoqué par l'application Centreon (de recette) qui tenteraient des connexions infructueuses sur le MySQL Centreon de production

            si la recette est une copie de la production et que les serveurs/login/pass n'ont pas été modifiés c'est bien possible que la recette tente de se connecter au serveur de base de données de prod.

  • # Très bonne astuce

    Posté par (page perso) . Évalué à 1.

    Bonsoir, je cherchai une solution depuis 2 jours car je rencontrai les mêmes problèmes, ces derniers sont résolus grâce à vous, mille merci.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.