not - ERROR 2003(HY000): No se puede conectar al servidor MySQL(111)
no se puede conectar al servidor mysql en localhost 10061 (10)
Esta pregunta está relacionada con las siguientes preguntas:
- No se puede conectar al error del servidor MySQL 111
- Intentando conectar con el host remoto de MySQL (error 2003)
Estoy configurando un nuevo servidor MySQL (5.1) en mi máquina local. Necesito proporcionar acceso remoto a la base de datos. Hice los siguientes pasos:
Comentar
bind-address
en my.cnf:# bind-address = 192.168.1.3
Otorgar privilegios:
GRANT ALL PRIVILEGES ON *.* TO ''nickruiz''@''%'' IDENTIFIED BY PASSWORD ''xxxx'';
- Configure el reenvío de puertos en el enrutador (TCP y UDP, puerto 3306, 192.168.1.3)
Configurar iptables para firewall
sudo iptables -I INPUT -p udp --dport 3306 -j ACCEPT sudo iptables -I INPUT -p tcp --dport 3306 --syn -j ACCEPT sudo iptables-save
Reinicie el servidor mysql
sudo /etc/init.d/mysql restart
Al realizar la prueba, obtengo lo siguiente:
LAN:
mysql -h 192.168.1.3 -u nickruiz -p
Welcome to the MySQL monitor. Commands end with ; or /g.
Your MySQL connection id is 95
Server version: 5.1.63-0ubuntu0.11.04.1 (Ubuntu)
Remoto:
mysql -h 1xx.xx.4.136 -u nickruiz -p
ERROR 2003 (HY000): Can''t connect to MySQL server on ''1xx.xx.4.136'' (111)
Claramente, hay algo mal que me impide poder usar mi dirección IP global.
Notas:
- He intentado probar la conexión remota en la misma máquina y también a través de SSH desde una máquina remota.
- No estoy seguro de si mi ISP me ha dado una IP estática.
¿Algunas ideas?
Actualización: telnet no parece estar funcionando.
telnet 192.168.1.3 3306
Trying 192.168.1.3...
Connected to 192.168.1.3.
Escape character is ''^]''.
E
5.1.63-0ubuntu0.11.04.1,0g8!:@pX;]DyY0#/)SIConnection closed by foreign host.
A veces, cuando tiene caracteres especiales en la contraseña, necesita envolverla en caracteres ''''
, por lo que para conectarse a db puede usar:
mysql -uUSER -p''pa$$w0rd''
Tuve el mismo error y esta solución lo resolvió.
No estoy seguro como no puedo verlo en los pasos que mencionaste.
Intente FLUSH PRIVILEGES [Recarga los privilegios de las tablas de concesión en la base de datos mysql]:
privilegios de descarga;
Necesitas ejecutarlo después de GRANT.
¡Espero que esto ayude!
Por favor revise sus puertos de escucha con:
netstat -nat |grep :3306
Si se muestra
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
Eso está bien para su conexión remota.
Pero en este caso creo que tienes
tcp 0 192.168.1.3:3306 0.0.0.0:* LISTEN
Eso está bien para su conexión remota. También deberías revisar tu firewall (iptables si centos / redhat)
services iptables stop
Para pruebas o uso:
iptables -A input -p tcp -i eth0 --dport 3306 -m state NEW,ESTABLISHED -j ACCEPT
iptables -A output -p tcp -i eth0 --sport 3306 -m state NEW,ESTABLISHED -j ACCEPT
Y otra cosa para comprobar su permiso de concesión para la conexión remota:
GRANT ALL ON *.* TO remoteUser@''remoteIpadress'' IDENTIFIED BY ''my_password'';
Si el sistema que usa es CentOS / RedHat, y rpm es la forma en que instala MySQL, no hay my.cnf en la carpeta / etc /, puede usar: #whereis mysql #cd / usr / share / mysql / cp -f /usr/share/mysql/my-medium.cnf /etc/my.cnf
Tengo una pregunta similar a la tuya, utilizo wireshark para capturar mis paquetes TCP enviados, encontré que cuando uso mysql
bin para conectar el host remoto, conecta el puerto 3307 del control remoto, esa es mi falla en /etc/mysql/my.cnf
, 3307 es otro puerto mysql del proyecto, pero cambio esa configuración en la parte my.cnf
[cliente], cuando uso la opción -P
para especificar el puerto 3306, está bien.
Tuve el mismo problema al intentar conectarme a un db remoto de mysql.
Lo arreglé abriendo el firewall en el servidor db para permitir el tráfico a través de:
sudo ufw allow mysql
Verifique que su host remoto (es decir, el servidor de alojamiento web desde el que intenta conectarse) permita el tráfico SALIENTE en el puerto 3306.
Vi el error (100) en esta situación. Podría conectarme desde mi PC / Mac, pero no desde mi sitio web. Se pudo acceder a la instancia de MySQL a través de Internet, pero mi empresa de alojamiento no permitía que mi sitio web se conectara a la base de datos en el puerto 3306.
Una vez que le pedí a mi empresa de alojamiento que abriera mi cuenta de alojamiento web hasta el tráfico saliente en el puerto 3306, mi sitio web podría conectarse a mi base de datos remota.
configuro mi dirección de enlace correctamente como antes, pero me olvidé de reiniciar el servidor mysql (o reinicio) :) cara palma - ¡así que esa es la fuente de este error para mí!
errno 111 es ECONNREFUSED, supongo que algo está mal con el DNAT del enrutador.
También es posible que su ISP esté filtrando ese puerto.
/etc/mysql$ sudo nano my.cnf
Porción relevante que me funciona:
#skip-networking
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = MY_IP
MY_IP
se puede encontrar usando ifconfig
o curl -L whatismyip.org |grep blue
.
Reinicie mysql para asegurarse de que se carga la nueva configuración:
/etc/mysql$ sudo service mysql restart