GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Cambiar el método de autenticación para el usuario raíz de MySQL en Ubuntu

Esta guía explica por qué y cómo cambiar el método de autenticación para el usuario root de MySQL a Almacenamiento en caché de autenticación conectable SHA-2 o Autenticación conectable nativa método en Ubuntu.

Introducción

Incluso si tiene contraseña de configuración para la raíz de MySQL usuario, aún no puede autenticarse con el servidor de la base de datos como root usuario con una contraseña. Porque el usuario root de MySQL está configurado para autenticarse usando el auth_socket complemento de forma predeterminada en lugar de la contraseña en los sistemas Ubuntu que ejecutan MySQL 5.7 y versiones más recientes. Por lo tanto, no puede acceder al servidor MySQL con el usuario root y su contraseña.

Incluso si intenta autenticarse como usuario raíz usando el comando:

$ mysql -u root -p

Recibirá el siguiente mensaje de error:

ERROR 1698 (28000): Access denied for user 'root'@'localhost'

El auth_socket El complemento verifica si el nombre de usuario del socket (el nombre de usuario del sistema operativo) coincide con el nombre de usuario de MySQL especificado por el programa cliente para el servidor.

A este complemento no le importa y no necesita una contraseña. Simplemente verifica si el usuario se está conectando usando un socket UNIX y luego compara el nombre de usuario.

Si el complemento encuentra que el nombre de usuario del sistema operativo y el nombre de usuario de MySQL son iguales, permite la conexión sin más autenticación.

Por ejemplo, si hay un usuario llamado ostechnix en el sistema operativo, podrá iniciar sesión en 'ostechnix'@'localhost' cuenta dentro de MySQL si la autenticación de socket Unix es el mecanismo de autenticación definido. Si el nombre de usuario del sistema operativo difiere del nombre de usuario de MySQL, el auth_socket el complemento simplemente rechaza la conexión.

El auth_socket El complemento mejora la seguridad, pero también complica las cosas cuando usamos programas externos como phpMyAdmin para acceder al servidor de la base de datos.

Además, los usuarios autenticados por el auth_socket El complemento solo puede conectarse desde el host local a través del archivo de socket de Unix. No pueden conectarse de forma remota. Es por eso que necesitamos cambiar el método de autenticación para el usuario root de MySQL en Ubuntu.

1. Cambiar el método de autenticación para el usuario raíz de MySQL en Ubuntu

MySQL proporciona muchos métodos de autenticación y los complementos que implementan esos métodos. En esta guía, solo analizamos dos complementos llamados caching_sha2_password y mysql_native_password que implementa los métodos llamados Caching SHA-2 Pluggable Authentication y autenticación conectable nativa respectivamente.

Primero, veremos cómo cambiar el método de autenticación para el usuario root de MySQL a caching_sha2_password .

1.1. Cambie el complemento de autenticación a caching_sha2_password

El caching_sha2_password El complemento realiza la autenticación utilizando el hash de contraseña SHA-256. En MySQL 8.0, caching_sha2_password es el complemento de autenticación predeterminado en lugar de mysql_native_password . Proporciona un cifrado de contraseña más seguro, una autenticación más rápida y un mejor rendimiento.

Para cambiar el complemento de autenticación, inicie sesión en el servidor MySQL usando el comando:

$ sudo mysql

Dado que MySQL 8 usa auth_socket complemento en Ubuntu, el comando anterior le permitirá iniciar sesión en el servidor MySQL como root usuario. Introduce tu sudo contraseña para autenticar.

A continuación, busque el método de autenticación actual para todas las cuentas de usuario de mysql ejecutando el siguiente comando en el indicador de MySQL:

mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;

Salida de muestra:

mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
 +------------------+------------------------------------------------------------------------+-----------------------+-----------+
 | user             | authentication_string                                                  | plugin                | host      |
 +------------------+------------------------------------------------------------------------+-----------------------+-----------+
 | debian-sys-maint | $A$005$||#WR:(W'NSP>|b2
                                             yXI9EfAeI6vnIj8I.Pwvw6Gx6V9bzVce9oTbN212V12 | caching_sha2_password | localhost |
 | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
 | mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
 | mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
 | root             |                                                                        | auth_socket           | localhost |
 +------------------+------------------------------------------------------------------------+-----------------------+-----------+
 5 rows in set (0.01 sec)

Como puede ver, el usuario root de MySQL usa auth_socket Complemento para la autenticación. Cambiemos el auth_socket complemento para caching_sha2_password complemento usando ALTER USER comando como a continuación.

Tenga en cuenta que si ha habilitado VALIDATE PASSWORD complemento mientras configura la contraseña de usuario raíz de MySQL, debe ingresar una contraseña segura según la política de contraseñas actual. Una contraseña segura debe constar de al menos 8 caracteres, incluidas una letra mayúscula, una letra minúscula, un número y un carácter especial.

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'Password123#@!';

¡Reemplace Password123#@! en el comando anterior con una contraseña segura y única de su elección y anótela ya que la necesitaremos más adelante.

Luego, actualice los cambios usando el comando:

mysql> FLUSH PRIVILEGES;

Ahora verifique si el complemento de autenticación actual se cambió o no usando el comando:

mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;

Salida de muestra:

+------------------+------------------------------------------------------------------------+-----------------------+-----------+
 | user             | authentication_string                                                  | plugin                | host      |
 +------------------+------------------------------------------------------------------------+-----------------------+-----------+
 | debian-sys-maint | $A$005$||#WR:(W'NSP>|b2
                                             yXI9EfAeI6vnIj8I.Pwvw6Gx6V9bzVce9oTbN212V12 | caching_sha2_password | localhost |
 | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
 | mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
 | mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
 | root             | $A$005$z9Lq/%(r l
 +DDI9wJbql8DWZNRoet2BSwUrIgjq.l7FxRSyMb/OWk4 | caching_sha2_password | localhost |
 +------------------+------------------------------------------------------------------------+-----------------------+-----------+
 5 rows in set (0.00 sec)

El método de autenticación para el usuario root de MySQL se ha establecido en Caching SHA-2 Pluggable Authentication. De ahora en adelante, el usuario raíz de MySQL puede autenticarse usando una contraseña.

Salga del indicador de mysql:

mysql> exit

Para verificar si el usuario raíz de MySQL puede iniciar sesión con una contraseña, ingrese el siguiente comando:

$ mysql -u root -p

Introduzca la contraseña de usuario root de MySQL:

 Welcome to the MySQL monitor.  Commands end with ; or \g.
 Your MySQL connection id is 11
 Server version: 8.0.25-0ubuntu0.20.04.1 (Ubuntu)

 Copyright (c) 2000, 2021, Oracle and/or its affiliates.

 Oracle is a registered trademark of Oracle Corporation and/or its
 affiliates. Other names may be trademarks of their respective
 owners.

 Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

 mysql> 

Aunque caching_sha2_password El complemento proporciona un cifrado seguro mejorado y un mejor rendimiento, tiene algunos problemas de compatibilidad con las instalaciones existentes de MySQL y causa problemas con algunas versiones de PHP. Para más detalles, consulte este enlace .

Si tuvo algún problema de compatibilidad o si el cliente o el conector no son compatibles con caching_sha2_password complemento de autenticación, volver al método de autenticación nativo, es decir, mysql_native_password como se describe en la siguiente sección.

1.2. Cambie el complemento de autenticación a mysql_native_password

MySQL incluye una mysql_native_password complemento que implementa el método de autenticación conectable nativo. Proporciona autenticación basada en el método hash de contraseña.

El mysql_native_password era el método de autenticación predeterminado en las versiones anteriores de MySQL.

Para cambiar a mysql_native_password complemento, inicie sesión en MySQL como root usuario:

$ mysql -u root -p

Si está utilizando auth_socket complemento, debe ingresar el siguiente comando para iniciar sesión en el servidor MySQL como root usuario:

$ sudo mysql

Para configurar mysql_native_password complemento como autenticación predeterminada para el usuario root de MySQL, ejecute el siguiente comando en el indicador de MySQL.

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Password123#@!';

Actualice los cambios usando el comando:

mysql> FLUSH PRIVILEGES;

Ahora verifique si el método de autenticación ha cambiado o no usando el comando:

mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;

Salida de muestra:

+------------------+------------------------------------------------------------------------+-----------------------+-----------+
 | user             | authentication_string                                                  | plugin                | host      |
 +------------------+------------------------------------------------------------------------+-----------------------+-----------+
 | debian-sys-maint | $A$005$||#WR:(W'NSP>|b2
                                             yXI9EfAeI6vnIj8I.Pwvw6Gx6V9bzVce9oTbN212V12 | caching_sha2_password | localhost |
 | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
 | mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
 | mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
 | root             | *B6032809F2C8CE37BDF05DEFE5BA30D6DC74DC68                              | mysql_native_password | localhost |
 +------------------+------------------------------------------------------------------------+-----------------------+-----------+
 5 rows in set (0.00 sec)

¡Hecho! Hemos cambiado el método de autenticación para el usuario raíz de MySQL a autenticación conectable nativa.

Conclusión

En esta guía, analizamos por qué necesitamos cambiar el método de autenticación para el usuario raíz de MySQL en los sistemas Ubuntu que ejecutan MySQL 5.7 y versiones más recientes. También hemos visto cómo cambiar auth_socket complemento para caching_sha2_password o mysql_native_password complemento para el usuario root de MySQL en el sistema operativo Ubuntu.

Lectura relacionada:

  • Cómo restablecer la contraseña raíz en MySQL 8 en Ubuntu Linux

Ubuntu
  1. Cómo cambiar Sudo o contraseña de root en Ubuntu

  2. Conviértase en usuario root en Ubuntu 22.04 - ¿Guía paso a paso?

  3. Cómo instalar MySQL en Ubuntu 18.04 LTS

  4. ¿Cambiar la ruta predeterminada de las carpetas de usuario?

  5. shell diferente para usuarios root y no root

Cómo cambiar la contraseña de usuario en Ubuntu [Tutorial para principiantes]

Una manera fácil de instalar MySQL en Ubuntu Linux

Cómo abrir el administrador de archivos de Ubuntu como usuario root

Cómo cambiar la contraseña de root en Ubuntu

Cómo cambiar la contraseña de root en Ubuntu Linux

¿Cómo iniciar sesión como raíz en Mysql?