tengo dosVPSservidores, y ambos tienenmysqlinstalado, uno para pruebas y otro para desarrollo. Uno de mis servidores no me deja conectarme desde fuera. Con el usuario;
'miusuariodeprueba'@'%'
De acuerdo aun buscador de puertos abiertos, el puerto 3306 del 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 -
Respuesta1
El problema era que el servidor solo escuchaba internamente.
Eliminar la línea bind-address 127.0.0.1
resolvió /etc/mysql/my.cnf
el problema.
Las versiones más nuevas de Ubuntu (≥16.04) pueden tener esta línea en formato /etc/mysql/mysql.conf.d/mysqld.cnf
.
Respuesta2
Mi sugerencia, si estás seguro de que los puertos están cerrados (me parece raro 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 la terminal sudo nano /etc/mysql/mysql.conf
y busque la [mysqld]
sección. En él, busca la línea que dice port = 3306
. Cámbielo a otro puerto que no utilice y guarde el archivo.
Luego simplemente reinicie el VPS o reinicie el servicio, como sudo service mysql restart
.
Sólo para tener en cuenta que, si el archivo mysql.conf
no está en el que mencioné anteriormente, puede estar en estos otros lugares:
/etc/my.conf
/etc/my.cnf
/etc/mysql/my.conf
Y si el service
comando no funciona, haz esto:
sudo /etc/init.d/mysql restart
Si el problema persiste, en mi caso comprobaríaiptables(De hecho, eliminaría todo en iptables solo para comenzar de nuevo si esto pudiera ser una opción) o cualquier otra opción habilitada para firewall.
Como son VPS, también consultaría el Panel de control de VPS para ver si tiene alguna opción que pueda bloquear puertos.
Aparte de eso, ejecutaría nmap
el VPS para ver qué puertos ha abierto. Debes ejecutarlo desde fuera del VPS para ver qué puertos han abierto.
netstat -tuplen
También es una buena idea ver qué puertos abiertos tienes en el servidor y cuáles están en modo ESCUCHA.
Respuesta3
Solucioné esto cambiando bind-address 127.0.0.1
a bind-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 de MySQL para usarla de forma remota. Para más detalles verEl host 'xxx.xx.xxx.xxx' no puede conectarse a este servidor MySQL.
Respuesta4
Puede pasar que tu configuración esté en el directorio /etc/mysql/mysql.conf.d/mysqld.cnf
, verifica si no es así.