type the supported standard said plugin not method change cannot caching_sha2_password available auth mysql authentication

the - Acceso a la raíz de MySQL desde todos los hosts



mysql authentication type standard (6)

A veces

bind-address = 127.0.0.1

debiera ser

bind-address = *

Instalé el servidor MySQL en una máquina Ubuntu remota. El usuario root se define en la tabla mysql.user 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 la root del usuario desde la misma interfaz de línea de comando de máquina remota utilizando el cliente estándar de mysql . Ahora quiero permitir el acceso a la raíz de cada host en Internet , así que intenté agregar la siguiente fila (es un duplicado exacto de la primera fila del volcado anterior, a excepción de la columna del host ):

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 (he oscurecido la IP del servidor):

Error 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 firewall del servidor habilité el puerto 3306 / TCP para 0.0.0.0/0 , y eso está bien para mí ...


Ejecute la siguiente consulta:

use mysql;

update user set host=''%'' where host=''localhost''

NOTA: No recomendado para uso de producción.


En mi caso, la configuración de "vincular dirección" era el problema. Comentar esta configuración en my.cnf no ayudó, porque en mi caso, mysql estableció el valor predeterminado en 127.0.0.1 por algún motivo.

Para verificar qué configuración usa actualmente MySql, abra la línea de comando en su casilla local:

mysql -h localhost -u myname -pmypass mydb

Lea la configuración actual:

Show variables where variable_name like "bind%"

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 bind-address en la sección [mysqld]:

bind-address=0.0.0.0

Finalmente reinicie su servidor MySql para elegir la nueva configuración:

sudo service mysql restart

Inténtelo de nuevo y verifique si la nueva configuración ha sido recogido.


Hay dos pasos en ese proceso:

a) Otorga privilegios. Como usuario root se ejecuta:

GRANT ALL PRIVILEGES ON *.* TO ''root''@''%'' IDENTIFIED BY ''password'';

b) enlazar a todas las direcciones:

La forma más fácil es comentar la línea en su archivo my.cnf :

#bind-address = 127.0.0.1

y reiniciar mysql

service mysql restart

Por defecto, se vincula solo a localhost, pero si comenta la línea, se enlaza a todas las interfaces que encuentra. Comentando la línea es equivalente a bind-address=* .

Para comprobar dónde se ha enlazado el servicio mysql, ejecute como raíz:

netstat -tupan | grep mysql

Actualización para Ubuntu 16:

El archivo de configuración es (ahora)

/etc/mysql/mysql.conf.d/mysqld.cnf

(al menos en Ubuntu 16 estándar)


MariaDB ejecutándose en Raspbian: el archivo que contiene bind-address es difícil de precisar. MariaDB tiene información not-very-helpful-info sobre el tema.

solía

# sudo grep -R bind-address /etc

para ubicar dónde está la maldita cosa

También tuve que configurar los privilegios y hosts en el mysql como todos los señalados anteriormente.

Y también me divertí mucho abriendo el puerto 3306 para conexiones remotas a mi Raspberry Pi, finalmente utilicé iptables-persistent .

Todo funciona bien ahora.


si tiene muchas redes conectadas a su sistema operativo, debe especificar una de esta red en las direcciones de enlace del archivo my.conf. un ejemplo:

[mysqld] bind-address = 127.100.10.234

esta ip es de una configuración ethX.