MariaDB comenzando con 10.4.3

En MariaDB 10.4.3 y luego, el unix_socket El complemento de autenticación está instalado de forma predeterminada y lo utiliza el 'root'@'localhost' cuenta de usuario de forma predeterminada. Consulte Autenticación de MariaDB 10.4 para obtener más información.

los unix_socket El complemento de autenticación permite al usuario utilizar las credenciales del sistema operativo cuando se conecta a MariaDB a través del archivo de socket Unix local. Este archivo de socket Unix está definido por el socket variable de sistema.

los unix_socket El complemento de autenticación funciona llamando al getsockopt llamada al sistema con el SO_PEERCRED opción de socket, que le permite recuperar el uid del proceso que está conectado al zócalo. A continuación, puede obtener el nombre de usuario asociado con ese uid. Una vez que tenga el nombre de usuario, autenticará al usuario que se conecta como la cuenta MariaDB que tiene el mismo nombre de usuario.

Deshabilitar el complemento

MariaDB comenzando con 10.4.3

En MariaDB 10.4.3 y luego, el unix_socket El complemento de autenticación está instalado de forma predeterminada, por lo que Si no desea que esté disponible de forma predeterminada en esas versiones, deberá deshabilitarlo..

los unix_socket El complemento de autenticación también está instalado de forma predeterminada en nuevas instalaciones que usan el .deb paquetes proporcionados por los repositorios predeterminados de Debian en Debian 9 y posteriores y los repositorios predeterminados de Ubuntu en Ubuntu 15.10 y posteriores, por lo que Si no desea que esté disponible de forma predeterminada en esos sistemas cuando se utilizan esos paquetes, deberá deshabilitarlo.. Consulte Diferencias en MariaDB en Debian (y Ubuntu) para obtener más información.

los unix_socket El complemento de autenticación se puede desactivar iniciando el servidor con el unix_socket opción establecida en OFF. Esto se puede especificar como un argumento de línea de comandos para mysqld o se puede especificar en un grupo de opciones de servidor relevante en un archivo de opciones. Por ejemplo:

[mariadb]...
unix_socket=OFF

Como alternativa, el unix_socket La opción también se puede establecer en OFF emparejando la opción con el disableopción prefix. Por ejemplo:

[mariadb]...
disable_unix_socket

Instalación del complemento

MariaDB comenzando con 10.4.3

En MariaDB 10.4.3 y luego, el unix_socket El complemento de autenticación está instalado de forma predeterminada, por lo que este paso se puede omitir en esas versiones.

los unix_socket El complemento de autenticación también está instalado de forma predeterminada en nuevas instalaciones que usan el .deb paquetes proporcionados por los repositorios predeterminados de Debian en Debian 9 y posteriores y los repositorios predeterminados de Ubuntu en Ubuntu 15.10 y posteriores, por lo que este paso se puede omitir en esos sistemas cuando se utilizan esos paquetes. Consulte Diferencias en MariaDB en Debian (y Ubuntu) para obtener más información.

En otros sistemas, aunque la biblioteca compartida del complemento se distribuye con MariaDB por defecto como auth_socket.so, MariaDB no instala el complemento de forma predeterminada. Hay dos métodos que se pueden utilizar para instalar el complemento con MariaDB.

El primer método se puede utilizar para instalar el complemento sin reiniciar el servidor. Puede instalar el complemento dinámicamente ejecutando INSTALL SONAME o INSTALL PLUGIN. Por ejemplo:

INSTALL SONAME'auth_socket';

El segundo método se puede utilizar para decirle al servidor que cargue el complemento cuando se inicie. El complemento se puede instalar de esta manera proporcionando el --plugin-load o la --plugin-load-add opciones. Esto se puede especificar como un argumento de línea de comandos para mysqld o se puede especificar en un grupo de opciones de servidor relevante en un archivo de opciones. Por ejemplo:

[mariadb]...
plugin_load_add = auth_socket

Desinstalar el complemento

Puede desinstalar el complemento dinámicamente ejecutando UNINSTALL SONAME o UNINSTALL PLUGIN. Por ejemplo:

UNINSTALL SONAME'auth_socket';

Si instaló el complemento proporcionando el --plugin-load o la --plugin-load-add opciones en un grupo de opciones de servidor relevante en un archivo de opciones, entonces esas opciones deben eliminarse para evitar que el complemento se cargue la próxima vez que se reinicie el servidor.

Crear usuarios

Para crear una cuenta de usuario a través de CREATE USER, especifique el nombre del complemento en el IDENTIFIED VIA cláusula. Por ejemplo:

CREATEUSER username@hostname IDENTIFIED VIA unix_socket;

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:

GRANTSELECTON db.*TO username@hostname IDENTIFIED VIA unix_socket;

Cambiar a la autenticación basada en contraseña

A veces, la autenticación de socket Unix no satisface sus necesidades, por lo que puede ser conveniente volver a cambiar una cuenta de usuario a la autenticación basada en contraseña. Esto se puede hacer fácilmente diciéndole a MariaDB que use otro complemento de autenticación para la cuenta ejecutando el ALTER USER declaración. El complemento de autenticación específico se especifica con el IDENTIFIED VIA cláusula. Por ejemplo, si desea cambiar al mysql_native_password complemento de autenticación, entonces podría ejecutar:

ALTERUSER root@localhost IDENTIFIED VIA mysql_native_password;SET PASSWORD = PASSWORD('foo');

Tenga en cuenta que si su sistema operativo tiene scripts que requieren acceso sin contraseña a MariaDB, esto puede romper esos scripts. Es posible que pueda solucionarlo estableciendo una contraseña en el [client]grupo de opciones en su archivo de opciones /root/.my.cnf. Por ejemplo:

[client]
password=foo

Complementos de autenticación de clientes

los unix_socket El complemento de autenticación no requiere ningún complemento de autenticación de cliente específico. Debería funcionar con todos los clientes.

Soporte en bibliotecas cliente

los unix_socket El complemento de autenticación no requiere ningún soporte especial en las bibliotecas cliente. Debería funcionar con todas las bibliotecas cliente.

Ejemplo

$ mysql -uroot
MariaDB []>CREATEUSER serg IDENTIFIED VIA unix_socket;
MariaDB []>CREATEUSER monty IDENTIFIED VIA unix_socket;
MariaDB []> quit
Bye
$ whoami
serg
$ mysql --user=serg
Welcome to the MariaDB monitor.  Commands endwith;or g.
Your MariaDB connection id is2
Server version: 5.2.0-MariaDB-alpha-debug Source distribution
MariaDB []> quit
Bye
$ mysql --user=monty
ERROR 1045(28000): Access denied foruser'monty'@'localhost'(using password: NO)

En este ejemplo, un usuario serg ya está conectado al sistema operativo y tiene acceso completo al shell. Ya se ha autenticado con el sistema operativo y su cuenta MariaDB está configurada para usar el unix_socket complemento de autenticación, por lo que no necesita autenticarse nuevamente para la base de datos. MariaDB acepta las credenciales de su sistema operativo y le permite conectarse. Sin embargo, se denegará cualquier intento de conectarse a la base de datos como otro usuario del sistema operativo.

Versiones

Versión Estado Introducido
1.0 Estable MariaDB 10.0.11
1.0 Beta MariaDB 5.2.0

Opciones

unix_socket

  • Descripción: Controla cómo el servidor debe tratar el complemento cuando se inicia.
    • Los valores válidos son:
      • OFF – Desactiva el complemento sin eliminarlo del mysql.plugin mesa.
      • ON – Habilita el complemento. Si el complemento no se puede inicializar, el servidor seguirá iniciándose, pero el complemento se desactivará.
      • FORCE – Habilita el complemento. Si el complemento no se puede inicializar, el servidor no podrá iniciarse con un error.
      • FORCE_PLUS_PERMANENT – Habilita el complemento. Si el complemento no se puede inicializar, el servidor no podrá iniciarse con un error. Además, el complemento no se puede desinstalar con UNINSTALL SONAME o UNINSTALL PLUGIN mientras el servidor está funcionando.
    • Consulte Descripción general del complemento: configuración de la activación del complemento al iniciar el servidor para obtener más información.
  • Línea de comando:--unix-socket=value
  • Tipo de datos:enumerated
  • Valor por defecto:ON
  • Valores válidos:OFF, ON, FORCE, FORCE_PLUS_PERMANENT

Ver también

  • Diferencias en MariaDB en Debian (y Ubuntu)
  • Autenticación de MariaDB 10.4

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.