He instalado el servidor MySQL en una máquina remota de Ubuntu. El root
usuario se define en la mysql.user
tabla de esta manera:
mysql> SELECT host, user, password FROM user WHERE user = 'root';
+------------------+------+-------------------------------------------+
| host | user | password |
+------------------+------+-------------------------------------------+
| localhost | root | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
| ip-10-48-110-188 | root | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
| 127.0.0.1 | root | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
| ::1 | root | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
+------------------+------+-------------------------------------------+
Puedo acceder con el usuario root
desde la misma interfaz de línea de comandos de la máquina remota utilizando el mysql
cliente estándar . Ahora quiero permitir el acceso a la raíz desde cada host en Internet , así que intenté agregar la siguiente fila (es un duplicado exacto de la primera fila del volcado anterior, excepto la host
columna):
mysql> SELECT host, user, password FROM user WHERE host = '%';
+------------------+------+-------------------------------------------+
| host | user | password |
+------------------+------+-------------------------------------------+
| % | root | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
+------------------+------+-------------------------------------------+
Pero mi cliente en mi PC personal continúa diciéndome (oscurecí la IP del servidor):
Error de SQL (2003): no se puede conectar al servidor MySQL en '46 .xxx '(10061)
No puedo decir si es un error de autenticación o un error de red. En el servidor de seguridad habilité el puerto 3306 / TCP para 0.0.0.0/0 , y eso está bien para mí ...
fuente
bind-address
en my.cnfRespuestas:
Hay dos pasos en ese proceso:
a) Conceder privilegios. Como usuario root, ejecute esta sustitución
'password'
con su contraseña de root actual:b) enlazar a todas las direcciones:
La forma más fácil es comentar la línea en su
my.cnf
archivo:y reiniciar mysql
De forma predeterminada, se vincula solo a localhost, pero si comenta la línea, se vincula a todas las interfaces que encuentra. Comentar la línea es equivalente a
bind-address=*
.Para verificar dónde se ha vinculado el servicio mysql, ejecute como root:
Actualización para Ubuntu 16:
El archivo de configuración es (ahora)
(al menos en Ubuntu 16 estándar)
fuente
USE mysql; UPDATE user SET Grant_priv='Y' WHERE user='root';
Ejecute la siguiente consulta:
use mysql;
update user set host='%' where host='localhost'
NOTA: No recomendado para uso en producción.
fuente
update mysql.user set host='%' where user='root'
Algunas veces
debiera ser
fuente
MYSQL 8.0 - abrir cliente de línea de comando mysql
CONCEDE TODOS LOS PRIVILEGIOS EN *. * A 'root' @ 'localhost';
use mysql
UPDATE mysql.user SET host = '%' WHERE user = 'root';
Reiniciar el servicio mysql
fuente
MariaDB ejecutándose en Raspbian: el archivo que contiene la dirección de enlace es difícil de identificar. MariaDB tiene información no muy útil sobre el tema.
solía
para localizar dónde está la maldita cosa.
También tuve que establecer los privilegios y hosts en mysql como todos los mencionados anteriormente.
Y también pasé un buen rato abriendo el puerto 3306 para conexiones remotas a mi Raspberry Pi, finalmente utilicé iptables-persistent .
Todo funciona muy bien ahora.
fuente
Si tiene muchas redes conectadas a su sistema operativo, debe especificar una de esta red en los enlaces de enlace del archivo my.conf. un ejemplo:
esta ip es de una configuración ethX.
fuente
En mi caso, la configuración de "dirección de enlace" era el problema. Al comentar esta configuración en
my.cnf
sí no ayuda, ya que en mi caso MySQL establecer el valor predeterminado a 127.0.0.1 por alguna razón.Para verificar qué configuración está usando MySql actualmente, abra la línea de comando en su cuadro local:
Lea la configuración actual:
Debería ver 0.0.0.0 aquí si desea permitir el acceso desde todos los hosts. Si este no es el caso, edite su
/etc/mysql/my.cnf
y establezca la dirección de enlace en la sección [mysqld]:Finalmente reinicie su servidor MySql para elegir la nueva configuración:
Intente nuevamente y verifique si se ha seleccionado la nueva configuración.
fuente
mysql_update
es lo que necesitasNo sé por qué alguien seguiría las formas más complejas de corregir este problema, cuando MySql gentilmente creó una herramienta que ya hace esto ...
fuente