Le port 3306 semble être fermé sur mon serveur Ubuntu

30

J'ai deux serveurs VPS , et les deux ont MySQL installé, un pour les tests et un pour le développement. Un de mes serveurs ne me laissera pas me connecter de l'extérieur. Avec l'utilisateur

  

'mytestuser' @ '%'

Selon un outil de recherche de port ouvert , le port 3306 du serveur incriminé semble être fermé. J'ai des programmes C ++ et Java de mon écoute sur des ports arbitraires sans aucun problème. Pourquoi est-ce que cela se produit et comment puis-je le réparer?

Ubuntu installé est Ubuntu 11.10 (GNU / Linux 2.6.32-042stab072.10 x86_64)

Résultats de netstat -tuple sur chaque serveur

Serveur fautif

tcp        0      0 localhost.lo:submission *:*                     LISTEN      root       39967664    -

Serveur de travail

tcp        0      0 *:mysql                 *:*                     LISTEN      mysql      1847519288  -
    
posée Andy 25.03.2013 - 02:58
la source

5 réponses

61

Le problème était que le serveur écoutait en interne uniquement.

La suppression de la ligne bind-address 127.0.0.1 de /etc/mysql/my.cnf a résolu le problème.

Les nouvelles versions d’Ubuntu (≥16.04) peuvent avoir cette ligne en /etc/mysql/mysql.conf.d/mysqld.cnf .

    
réponse donnée Andy 25.03.2013 - 23:20
la source
8

Ma suggestion, si vous êtes sûr que les ports sont fermés (je trouve cela bizarre pour un VPS de fermer ce port), est de changer le fichier de configuration de MySQL pour en utiliser un autre.

Ouvrez simplement le fichier de configuration dans le terminal, sudo nano /etc/mysql/mysql.conf , et recherchez la section [mysqld] . Dans ce document, recherchez la ligne qui lit port = 3306 . Changez-le en un autre port non utilisé et enregistrez le fichier.

Ensuite, redémarrez simplement le VPS ou redémarrez le service, comme sudo service mysql restart .

Juste pour noter que, si le fichier mysql.conf n'est pas dans celui que j'ai mentionné ci-dessus, il peut être dans ces autres endroits:

/etc/my.conf
/etc/my.cnf
/etc/mysql/my.conf

Et si la commande service ne fonctionne pas, faites ceci:

sudo /etc/init.d/mysql restart

Si le problème persiste, dans mon cas, je vérifierais iptables (en fait, je supprimerais tout dans iptables juste pour démarrer frais si cela pourrait être une option) ou toute autre option de pare-feu.

Puisqu'ils sont VPS, je vérifierais également le panneau de configuration de VPS pour voir s'il a une option qui peut bloquer des ports.

En dehors de cela, j'exécuterais nmap sur le VPS pour voir quels ports vous avez ouverts. Vous devez l'exécuter en dehors du VPS pour voir quels ports ils ont ouverts.

netstat -tuplen est également une bonne idée pour voir quels ports ouverts vous avez sur le serveur et lesquels sont en mode LISTEN.

    
réponse donnée Luis Alvarado 25.03.2013 - 03:16
la source
4

J'utilise cette méthode:

sudo ufw status
sudo ufw allow XXXX/tcp
# use a port other than the default/predictable 3306
# work outside, and close the door when you are done
sudo ufw deny XXXX/tcp

Pas besoin de changer d’autres fichiers de configuration, et pas de ports supplémentaires ouverts par défaut.

    
réponse donnée ftcosta 20.06.2015 - 14:06
la source
2

J'ai corrigé cela en changeant bind-address 127.0.0.1 en bind-address 0.0.0.0 en /etc/mysql/mysql.conf.d (pour que MySQL écoute tous les ports).

J'ai également configuré un compte utilisateur mysql à utiliser à distance (voir lien ).

    
réponse donnée Jon Onstott 06.04.2016 - 18:10
la source
1

Il se peut que votre configuration se trouve dans le répertoire /etc/mysql/mysql.conf.d/mysqld.cnf , vérifiez si ce n’est pas le cas.

    
réponse donnée winter 20.10.2016 - 10:21
la source

Lire d'autres questions sur les étiquettes