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)
netstat -Tuple
sur chaque serveurtcp 0 0 localhost.lo:submission *:* LISTEN root 39967664 -
tcp 0 0 *:mysql *:* LISTEN mysql 1847519288 -
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
.
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.
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.
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 ).
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.