Tengo un servidor MySQL ejecutándose en mi computadora de trabajo, que ejecuta Mac OS X Maverick. Quiero acceder desde la computadora de mi casa, que también tiene Mac OS Maverick.
Desde la terminal, si en 1 pestaña, ingreso a mi computadora de trabajo y simplemente dejo que la sesión ssh permanezca allí sin estar inactiva, luego en otra pestaña, puedo acceder al servidor MySQL.
Sin embargo, sin la sesión ssh ejecutándose, obtendré el siguiente error
ERROR 2003 (HY000): no se puede conectar al servidor MySQL en 'SERVER_IP_ADDRESS' (60)
Intenté modificar el my.cnf
archivo en el servidor comentando la dirección de enlace o asignándola, 0.0.0.0
pero no funciona.
¿Por qué es así? ¿Cómo puedo configurar el servidor para que permita el acceso remoto sin tener que ejecutar ssh en el cliente? ¿Puede ayudarme alguien, por favor?
ssh
está abierto en una pestaña, pero por lo demás no. Creo que el problema es que el proceso del servidor de la base de datos está en pausa o no se ejecuta cuando no estoy conectado al servidor remoto.Respuestas:
He estado golpeando mi cabeza contra este error hoy en OSX Yosemite con MySQL 5.7 actualizado recientemente con Homebrew. Siguiendo las sugerencias sobre StackOverflow y en otros lugares, busqué los
my.cnf
archivos que especificabanbind-address=0.0.0.0
. Incluso eliminé y reinstalé MySQL siguiendo estas instrucciones y luego reinstalé usandobrew install mysql
. Todavía no se permiten conexiones remotas.No fue hasta que corrí
ps -ax | grep mysql
y noté que la dirección de enlace se pasaba en el comando de inicio (anulando así losmy.cnf
archivos) que cavé un poco más y descubrí que Homebrew vincula MySQL a 127.0.0.1 por defecto .Editar
~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
para cambiar--bind-address=127.0.0.1
para--bind-address=0.0.0.0
resolver mi problema (este último debe cambiarse a una dirección IP específica si esto no es solo una máquina de desarrollo).Siento que esta es una información vital que faltaba en la mayoría de los recursos que consulté, ¡así que espero que publicar esto aquí ayude a alguien más!
EDITAR: Como LeandroCR indicó en los comentarios, la ejecución
brew services restart mysql
sobrescribirá el archivo plist en LaunchAgents con el predeterminado, lo que lleva a MySQL a rechazar misteriosamente las conexiones nuevamente. Entonces, un mejor consejo que el que escribí originalmente es el siguiente:/usr/local/Cellar/mysql/<yourversion>/homebrew.mxcl.mysql.plist
y reemplace--bind-address=127.0.0.1
conbind-address=*
o--bind-address=0.0.0.0
( consulte la documentación de MySQL en bind-address )brew services restart mysql
Entonces MySQL debería continuar aceptando conexiones no locales a partir de entonces, hasta que lo reinstales, presumiblemente.
Editar (septiembre de 2019) Timothy Zorn señala que este problema ya no se produce para MySQL 8.x instalado y ejecutado a través de Homebrew, por lo que mi respuesta anterior, escrita en 2016, solo puede ser relevante para 5.x.
fuente
brew install mysql56
, y cambié los archivos~/Library/LaunchAgents/homebrew.mxcl.mysql56.plist
y/usr/local/Cellar/mysql56/5.6.32/homebrew.mxcl.mysql56.plist
. Pero aún cuando ejecuto mysqlmysql.server start
, el comando ps muestra que elbind-address=127.0.0.1
. ¿Hay otros archivos para editar?mysql.server start
omite el LaunchAgent, por lo que probablemente obtiene su configuración de otro lugar. Para usar la configuración en elplist
, probablemente tenga que usarbrew services restart mysql
brew services restart mysql
salidaSuccessfully started
mysql` (etiqueta: homebrew.mxcl.mysql) `pero la dirección sigue siendo127.0.0.1
. En realidad no pude encontrar enhomebrew.mxcl.mysql.plist
lugar de tenerhomebrew.mxcl.mysql56.plist
mysqld_safe
para mí no tienebind_address
. En cambio, se especifica en/usr/local/etc/my.cnf
.Running
locate my.cnf
encontró el archivo/usr/local/etc/my.cnf
bind-address = 0.0.0.0
brew services restart mysql
fuente
Espero que necesite crear el usuario para acceso remoto con
'%'
comodines y otorgar permisos en bases de datos.Paso 1:
En my.cnf ( /server/9107/how-do-i-find-where-mysql-is-loading-its-config-from ) comente su dirección de enlace
Y reinicie el servidor MySQL.
Paso 2:
Luego debe otorgar permisos al usuario para acceso remoto
Eche un vistazo a Cómo habilitar la conexión remota.
fuente
mysql> show grants for 'home'; | Grants for home@% | GRANT ALL PRIVILEGES ON *.* TO 'home'@'%' IDENTIFIED BY PASSWORD '...' WITH GRANT OPTION |
Verifique iptables como iptables -L
Si su IP no está presente, agréguela
En el caso de Ubuntu ADD IP para permitir el acceso:
fuente