El usuario root en MySQL 8.0 viene configurado sin contraseña ya que el mecanismo o plugin de autenticación es auth_socket, eso se puede comprobar con un
SELECT User,Host,plugin FROM mysql.user WHERE user='root';
+------+-----------+-------------+
| User | Host | plugin |
+------+-----------+-------------+
| root | localhost | auth_socket |
+------+-----------+-------------+
La configuración anterior garantiza un alto nivel de seguridad ya que se pueden conectar al servidor MySQL solo usuarios UNIX con privilegios de root y desde localhost, cambiar este comportamiento conlleva riesgos de seguridad pero si aún desea ejecutar el método que se describe a continuación hágalo en un ambiente los más seguro posible como en una VPN, red aréa local doméstica, despliegue un muro cortafuego que sea capaz de neutralizar cualquier ataque a su servidor de BD o configure su MySQL para aceptar conexiones vía SSL.
Ahora para permitir que el usario root se conecte desde cualquier dispositivo usando contraseña debemos cambiar el valor de las columnas Host y Plugin, primero cambiemos el valor de la columna Host con un:
UPDATE mysql.user SET Host='%' WHERE User='root' AND Host='localhost';
el % significa que nos podemos conectar desde cualquier dispositivo siempre y cuando la directiva bind-address lo permita te recomiendo el siguiente video: ¿Cómo conectarse a un servidor MySQL remoto? y el artículo # Acceder a un servidor MySQL desde la Red de Área Local luego
FLUSH PRIVILEGES;
y ahora procederemos a cambiar el mecanismo de autenticación para ello debemos ver los mecanismos de autenticación disponibles con:
SHOW PLUGINS;
debemos fijarnos en los que tienen AUTHENTICATION en la columna Type, ahora cambiamos el método de autenticación de root con:
ALTER USER root IDENTIFIED WITH caching_sha2_password BY 'nueva-contraseña';
y refrescamos privilegios
FLUSH PRIVILEGES;
Enlaces de interés
- Socket Peer-Credential Pluggable Authentication
- caching_sha2_password as the Preferred Authentication Plugin
- Authentication Plugin – Unix Socket
Administrar MySQL desde la línea de comandos, 5 (18)
- Cómo instalar MySQL 8.0 en Ubuntu 20.04
- Como instalar MySQL 8.0 en Debian
- Cómo instalar MariaDB en Alpine Linux
- Cómo instalar MariaDB en NetBSD
- MySQL 8.0, cambiar contraseña de root
- ¿Cómo mostrar variables del sistema en MySQL?
- Deshabilitar innodb engine en mysql
- Administrar servidor MySQL – Básico
- Motores de almacenamiento disponibles/habilitados en MySQL
- MySQL: Recuperar la clave (password) de root
- MySQL Administración de usuarios
- MySQL ejecutar script SQL
- Copias de seguridad (Backup) en MySQL
- Crear / Modificar / Eliminar tablas en MySQL
- Connectarse a MySQL desde la LAN
- Character set disponibles en MySQL
- MySQL no puede escribir en el dir /tmp
- Cómo instalar MySQL 5.7 en CentOS 7
Hola, Me llamo Julio y me gusta mucho el trabajo que vienes realizando.
Hay algunas cosas que pasan en el dia a dia y que no hay mucha documentacion al respecto. En algunos casos, tienes que ir a stackoverflow a buscar informacion y pierdes mucho tiempo en encontrarlas. a veces no se adaptan a tu problema 100 %.
Por Tu experiencia, que veo que es mucha, podrias hacer algunos videos que traten estos temas.
Un saludo.
Hola Julio gracias por el comentario, en cuanto a lo que planteas es así: la mayoría de las veces lo que encontramos solo resuelve un parte de lo que andamos buscando, por eso se hace necesario consultar varias fuentes.