Tengo dos servidores VPS , y ambos tienen instalado MySQL , uno para pruebas y otro para desarrollo. Uno de mis servidores no me deja conectar desde afuera. Con el usuario;
'mytestuser' @ '%'
Según un buscador de puertos abierto , el puerto 3306 para el servidor infractor parece estar cerrado. Tengo mis propios programas C ++ y Java escuchando en puertos arbitrarios sin ningún problema. ¿Por qué sucede esto y cómo puedo solucionarlo?
Ubuntu instalado es Ubuntu 11.10 (GNU / Linux 2.6.32-042stab072.10 x86_64)
Resultados de netstat -tuple
en cada servidor
Servidor infractor
tcp 0 0 localhost.lo:submission *:* LISTEN root 39967664 -
Servidor de trabajo
tcp 0 0 *:mysql *:* LISTEN mysql 1847519288 -
/etc/mysql/my.cnf
, no/etc/mysql/my.conf
.Mi sugerencia, si está seguro de que los puertos están cerrados (me parece extraño que un VPS tenga ese puerto cerrado) es cambiar el archivo de configuración de MySQL para usar otro.
Simplemente abra el archivo de configuración en el terminal
sudo nano /etc/mysql/mysql.conf
, y busque la[mysqld]
sección. En él, busca la línea que diceport = 3306
. Cámbielo a otro puerto no utilizado y guarde el archivo.Luego, simplemente reinicie el VPS o reinicie el servicio, como
sudo service mysql restart
.Solo para tener en cuenta que, si el archivo
mysql.conf
no está en el que mencioné anteriormente, puede estar en estos otros lugares:Y si el
service
comando no funciona, haga esto:Si el problema persiste, en mi caso verificaría iptables (en realidad eliminaría todo en iptables solo para comenzar de nuevo si esta podría ser una opción) o cualquier otra opción habilitada para firewall.
Como son VPS, también verificaría el Panel de control de VPS para ver si tiene alguna opción que pueda bloquear los puertos.
Aparte de eso, correría
nmap
en el VPS para ver qué puertos ha abierto. Debe ejecutarlo desde fuera del VPS para ver qué puertos han abierto.netstat -tuplen
También es una buena idea ver qué puertos abiertos tiene en el servidor y cuáles están en modo ESCUCHAR.fuente
Lo arreglé cambiando
bind-address 127.0.0.1
abind-address 0.0.0.0
in/etc/mysql/mysql.conf.d
(para que MySQL escuche en todos los puertos).Además, configuré una cuenta de usuario mysql para usarla de forma remota (consulte https://stackoverflow.com/a/24171107/132374 ).
fuente
Yo uso este método:
No es necesario cambiar otros archivos de configuración, y no se abren puertos adicionales de forma predeterminada.
fuente
sudo ufw allow 3306/tcp
Traté de editar pero no me lo permitíaPuede suceder que su configuración esté en el directorio
/etc/mysql/mysql.conf.d/mysqld.cnf
, verifique si ese no es el caso.fuente