los mysql_native_password El complemento de autenticación es el complemento de autenticación predeterminado que se utilizará para una cuenta creada cuando no se menciona explícitamente ningún complemento de autenticación y old_passwords=0 Está establecido. Utiliza el algoritmo hash de contraseña introducido en MySQL 4.1, que también es utilizado por PASSWORD() funcionar cuando old_passwords=0 Está establecido. Este algoritmo hash se basa en SHA-1.

No se recomienda utilizar el mysql_native_password complemento de autenticación para nuevas instalaciones que requieren alta seguridad de contraseña. Si alguien puede escuchar el protocolo de conexión y obtener una copia de la tabla mysql.user, entonces la persona podrá usar esta información para conectarse al servidor MariaDB. los ed25519 El complemento de autenticación es un complemento de autenticación más moderno que proporciona una autenticación de contraseña simple mediante un algoritmo más seguro.

Instalación del complemento

los mysql_native_password El complemento de autenticación está vinculado estáticamente al servidor, por lo que no es necesaria ninguna instalación.

Crear usuarios

La forma más sencilla de crear una cuenta de usuario con la mysql_native_password complemento de autenticación es para asegurarse de que old_passwords=0 está configurado, y luego cree una cuenta de usuario a través de CREATE USER que no especifica un complemento de autenticación, pero especifica una contraseña a través del IDENTIFIED BY cláusula. Por ejemplo:

SET old_passwords=0;CREATEUSER username@hostname IDENTIFIED BY'mariadb';

Si SQL_MODE no tiene NO_AUTO_CREATE_USER , entonces también puede crear la cuenta de usuario a través de GRANT. Por ejemplo:

SET old_passwords=0;GRANTSELECTON db.*TO username@hostname IDENTIFIED BY'mariadb';

También puede crear la cuenta de usuario proporcionando un hash de contraseña a través del IDENTIFIED BY PASSWORD cláusula, y MariaDB validará si el hash de la contraseña es compatible con mysql_native_password. Por ejemplo:

SET old_passwords=0;
Query OK,0rows affected (0.000 sec)SELECT PASSWORD('mariadb');+-------------------------------------------+| PASSWORD('mariadb')|+-------------------------------------------+|*54958E764CE10E50764C2EECBB71D01F08549980 |+-------------------------------------------+1rowinset(0.000 sec)CREATEUSER username@hostname IDENTIFIED BY PASSWORD '*54958E764CE10E50764C2EECBB71D01F08549980';

Al igual que con todos los demás complementos de autenticación, también puede especificar el nombre del complemento en el IDENTIFIED VIA cláusula al tiempo que proporciona el hash de la contraseña como USING cláusula. Por ejemplo:

CREATEUSER username@hostname IDENTIFIED VIA mysql_native_password USING'*54958E764CE10E50764C2EECBB71D01F08549980';
Query OK,0rows affected (0.000 sec)

Cambio de contraseñas de usuario

Puede cambiar la contraseña de una cuenta de usuario con el SET PASSWORD declaración al tiempo que proporciona la contraseña de texto sin formato como argumento a la PASSWORD() función. Por ejemplo:

SET PASSWORD =  PASSWORD('new_secret')

También puede cambiar la contraseña de la cuenta de usuario con el ALTER USER declaración. Tendrías que asegurarte de que old_passwords=0 está configurado, y luego tendría que especificar una contraseña a través del IDENTIFIED BY cláusula. Por ejemplo:

SET old_passwords=0;ALTERUSER username@hostname IDENTIFIED BY'new_secret';

Complementos de autenticación de clientes

Para clientes que utilizan el libmysqlclient o bibliotecas MariaDB Connector / C, MariaDB proporciona un complemento de autenticación de cliente que es compatible con mysql_native_password complemento de autenticación:

  • mysql_native_password

Al conectarse con un cliente o una utilidad a un servidor como una cuenta de usuario que se autentica con el mysql_native_password complemento de autenticación, es posible que deba decirle al cliente dónde encontrar el complemento de autenticación de cliente relevante especificando el --plugin-dir opción. Por ejemplo:

mysql --plugin-dir=/usr/local/mysql/lib64/mysql/plugin --user=alice

sin embargo, el mysql_native_password El complemento de autenticación de cliente generalmente está vinculado estáticamente a bibliotecas de cliente como libmysqlclient o MariaDB Connector / C, por lo que normalmente no es necesario.

mysql_native_password

los mysql_native_password El complemento de autenticación del cliente aplica un hash a la contraseña antes de enviarla al servidor.

Soporte en bibliotecas cliente

los mysql_native_password El complemento de autenticación es uno de los complementos de autenticación convencionales, por lo que todas las bibliotecas cliente deberían admitirlo.

Problemas antiguos conocidos (solo relevante para instalaciones antiguas)

Discrepancias entre las columnas Password y authentication_string

Por razones de compatibilidad, el mysql_native_password El complemento de autenticación intenta leer el hash de la contraseña de ambos Password y authentication_string columnas en el mysql.user mesa. Esto ha causado problemas en el pasado si una de las columnas tenía un valor diferente al de la otra.

Empezando con MariaDB 10.2.19 y MariaDB 10.3.11, CREATE USER, ALTER USER, GRANT, y SET PASSWORD establecerá ambas columnas siempre que se cambie la contraseña de una cuenta.

Ver MDEV-16774 para más información.

Ver también

El contenido reproducido en este sitio es propiedad de sus respectivos dueños, y MariaDB no revisa este contenido con anticipación. Los puntos de vista, la información y las opiniones expresadas por este contenido no representan necesariamente las de MariaDB o de cualquier otra parte.