Conexiones Remotas Mysql Ubuntu


Por alguna razón, no he podido conectarme remotamente a mi servidor MySQL. Lo he intentado todo y sigo teniendo errores.

root@server1:/home/administrator# mysql -u monty -p -h www.ganganadores.cl
Enter password:
ERROR 1045 (28000): Access denied for user 'monty'@'server1.ganganadores.cl' (using           password: YES)

Ahora, he intentado ejecutar

 `GRANT ALL ON *.* to monty@localhost IDENTIFIED BY 'XXXXX'; 
 GRANT ALL ON *.* to monty@'%' IDENTIFIED BY 'XXXXXX';` 

Y todavía nada! ¿Qué estoy haciendo mal?

EDITAR: mi.cnf ha comentado el bind ip .

Author: JackLock, 2013-03-27

4 answers

Para exponer MySQL a cualquier cosa que no sea localhost tendrá que tener la siguiente línea

Para mysql versión 5.6 y inferior

Sin comentar en /etc/mysql/my.cnf y asignado a la dirección IP de su equipo y no loopback

Para mysql versión 5.7 y superior

Sin comentar en /etc/mysql/mysql.conf.d/mysqld.cnf y asignado a la dirección IP de su equipo y no loopback

#Replace xxx with your IP Address 
bind-address        = xxx.xxx.xxx.xxx

O añádase un bind-address = 0.0.0.0 si no desea especificar la IP

Luego deténgase y reinicie MySQL con el nuevo my.entrada cnf. Una vez ejecutada, vaya al terminal e ingrese el siguiente comando.

lsof -i -P | grep :3306

Que debería volver algo como esto con su IP real en el xxx

mysqld  1046  mysql  10u  IPv4  5203  0t0  TCP  xxx.xxx.xxx.xxx:3306 (LISTEN)

Si la instrucción anterior regresa correctamente, podrá aceptar usuarios remotos. Sin embargo, para que un usuario remoto se conecte con las priveleges correctas, debe tener ese usuario creado tanto en el localhost como en'%'.

CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypass';
CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypass';

Entonces

GRANT ALL ON *.* TO 'myuser'@'localhost';
GRANT ALL ON *.* TO 'myuser'@'%';

Y por último,

FLUSH PRIVILEGES; 
EXIT;

Si no tiene el mismo usuario creado que el anterior, cuando inicie sesión localmente puede heredar privilegios de host local base y tener problemas de acceso. Si desea restringir el acceso que tiene myuser, entonces tendría que leer la sintaxis de la sentencia GRANT AQUÍ Si pasa por todo esto y todavía tiene problemas para publicar algún error adicional y el mi.cnf líneas apropiadas.

NOTA: Si lsof no regresa o no se encuentra, puede instalarlo AQUÍ basado en su distribución Linux. No necesita lsof para hacer que las cosas funcionen, pero es extremadamente útil cuando las cosas no funcionan como se espera.

 298
Author: apesa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-08 14:20:55

Añadir algunos puntos en la parte superior del excelente post de apesa:

1) Puede usar el comando a continuación para verificar la dirección ip que el servidor mysql está escuchando

netstat -nlt | grep 3306

sample result:

tcp 0  0  xxx.xxx.xxx.xxx:3306  0.0.0.0:*   LISTEN

2) Use FLUSH PRIVILEGES para forzar la carga de tablas de grant si por alguna razón los cambios no entran en vigencia inmediatamente

GRANT ALL ON *.* TO 'user'@'localhost' IDENTIFIED BY 'passwd' WITH GRANT OPTION;
GRANT ALL ON *.* TO 'user'@'%' IDENTIFIED BY 'passwd' WITH GRANT OPTION;
FLUSH PRIVILEGES; 
EXIT;

3) Si netfilter firewall está habilitado (sudo ufw enable) en el equipo servidor mysql, haga lo siguiente para abrir el puerto 3306 para acceso remoto:

sudo ufw allow 3306

Compruebe el estado usando

sudo ufw status

4) Una vez que una conexión remota se establece, se puede verificar en cualquier máquina cliente o servidor utilizando comandos

netstat -an | grep 3306
netstat -an | grep -i established
 25
Author: Jonathan L,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-05 07:08:53

MySQL solo escucha localhost, si queremos habilitar el acceso remoto a él, entonces necesitamos hacer algunos cambios en mi.archivo cnf:

sudo nano /etc/mysql/my.cnf

Necesitamos comentar las líneas bind-address y skip-external-locking:

#bind-address = 127.0.0.1
# skip-external-locking

Después de hacer estos cambios, necesitamos reiniciar el servicio mysql:

sudo service mysql restart
 3
Author: VinhLe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-20 09:13:42

Si realiza pruebas en Windows, no olvide abrir el puerto 3306.

 1
Author: marw,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-30 11:58:43