web-dev-qa-db-fra.com

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

J'ai deux VPS serveurs, et les deux ont MySQL installés, 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 n port Finder ouvert , le port 3306 du serveur incriminé semble être fermé. J'ai les programmes C++ et Java de ma propre écoute sur des ports arbitraires sans aucun problème. Pourquoi cela se produit-il 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 offensant

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

Serveur de travail

tcp        0      0 *:mysql                 *:*                     LISTEN      mysql      1847519288  -
32
Andy

Le problème était que le serveur n'écoutait qu'en interne.

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

Les versions plus récentes d’Ubuntu (≥16.04) peuvent avoir cette ligne dans /etc/mysql/mysql.conf.d/mysqld.cnf.

72
Andy

Ma suggestion, si vous êtes sûr que les ports sont fermés (je trouve ça 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 cherchez la section [mysqld]. Dans celui-ci, recherchez la ligne qui se lit port = 3306. Changez-le sur un autre port non utilisé et enregistrez le fichier.

Ensuite, redémarrez simplement le SMV ou redémarrez le service, comme Sudo service mysql restart.

Juste pour noter que, si le fichier mysql.conf ne se trouve pas dans celui que j'ai mentionné ci-dessus, il peut se trouver à cet endroit:

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

Et si la commande service ne fonctionne pas, procédez comme suit:

Sudo /etc/init.d/mysql restart

Si le problème persiste, dans mon cas, je vérifierais iptables (je supprimerais tout ce qui se trouve dans iptables juste pour recommencer à zéro si cela pouvait être une option) ou toute autre option activée pour le pare-feu.

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

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

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

8
Luis Alvarado

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.

5
ftcosta

J'ai résolu ce problème en remplaçant bind-address 127.0.0.1 par bind-address 0.0.0.0 dans /etc/mysql/mysql.conf.d (pour que MySQL écoute sur tous les ports).

De plus, j’ai configuré un compte utilisateur mysql à utiliser à distance (voir https://stackoverflow.com/a/24171107/132374 ).

3
Jon Onstott

Il peut arriver 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.

1
winter