J'ai deux serveurs VPS , et MySQL est installé sur les deux serveurs, 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 détecteur de port ouvert , le port 3306 du serveur incriminé semble être fermé. J'ai des 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 -
/etc/mysql/my.cnf
, pas/etc/mysql/my.conf
.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 recherchez la[mysqld]
section. Dans ce document , recherchez la ligne qui litport = 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 se peut que ce soit dans cet autre endroit:Et si la
service
commande ne fonctionne pas, procédez comme suit:Si le problème persiste, dans mon cas, je vérifierai 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, je courrais
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
C'est aussi une bonne idée de voir quels ports ouverts vous avez sur le serveur et lesquels sont en mode LISTEN.la source
J'ai corrigé cela en passant
bind-address 127.0.0.1
àbind-address 0.0.0.0
in/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 ).
la source
J'utilise cette méthode:
Pas besoin de changer d'autres fichiers de configuration, et pas de ports supplémentaires ouverts par défaut.
la source
sudo ufw allow 3306/tcp
J'ai essayé d'éditer mais je ne voulais pas me laisser faireIl 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.la source