La declaración ALTER USER se introdujo en MariaDB 10.2.0.
Sintaxis
ALTERUSER[IFEXISTS] user_specification [,user_specification]...[REQUIRE NONE ][WITH resource_option [resource_option]...][password_option | lock_option] user_specification: username [authentication_option] authentication_option: IDENTIFIED BY'password'| IDENTIFIED BY PASSWORD 'password_hash'| IDENTIFIED WITH authentication_plugin | IDENTIFIED WITH authentication_plugin USING 'authentication_string'| IDENTIFIED WITH authentication_plugin USING PASSWORD('password') tls_option SSL | X509 | CIPHER 'cipher'| ISSUER 'issuer'| SUBJECT 'subject' resource_option MAX_QUERIES_PER_HOUR count | MAX_UPDATES_PER_HOUR count | MAX_CONNECTIONS_PER_HOUR count | MAX_USER_CONNECTIONS count | MAX_STATEMENT_TIME time password_option: PASSWORD EXPIRE | PASSWORD EXPIRE DEFAULT| PASSWORD EXPIRE NEVER | PASSWORD EXPIRE INTERVAL N DAY lock_option: ACCOUNT LOCK| ACCOUNT UNLOCK }
Descripción
los ALTER USER
declaración modifica las cuentas MariaDB existentes. Para usarlo, debe tener el global CREATE USER
privilegio o el UPDATE
privilegio para el mysql
base de datos. Lo global SUPER
También se requiere privilegio si el read_only
la variable del sistema está habilitada.
Si alguna de las cuentas de usuario especificadas aún no existe, se produce un error. Si ocurre un error, ALTER USER
seguirá modificando las cuentas que no den lugar a un error. Solo se produce un error para todos los usuarios que no han sido modificados.
SI EXISTE
Cuando el IF EXISTS
se utiliza una cláusula, MariaDB devolverá una advertencia en lugar de un error para cada usuario especificado que no existe.
Nombres de cuenta
Para ALTER USER
extractos, los nombres de las cuentas se especifican como username
argumento de la misma manera que lo son para CREATE USER
declaraciones. Ver nombres de cuentas del CREATE USER
página para obtener detalles sobre cómo se especifican los nombres de cuenta.
CURRENT_USER
o CURRENT_USER()
también se puede utilizar para modificar la cuenta que inició sesión en la sesión actual. Por ejemplo, para cambiar la contraseña del usuario actual a mariadb
:
ALTERUSERCURRENT_USER() IDENTIFIED BY'mariadb';
Opciones de autenticación
IDENTIFICADO POR ‘contraseña’
El opcional IDENTIFIED BY
La cláusula se puede utilizar para proporcionar una cuenta con una contraseña. La contraseña debe especificarse en texto sin formato. Será hash por el PASSWORD
función antes de ser almacenado en el mysql.user
mesa.
Por ejemplo, si nuestra contraseña es mariadb
, luego podemos configurar la contraseña de la cuenta con:
ALTERUSER foo2@test IDENTIFIED BY'mariadb';
Si no especifica una contraseña con el IDENTIFIED BY
cláusula, el usuario podrá conectarse sin contraseña. Una contraseña en blanco no es un comodín para coincidir con ninguna contraseña. El usuario debe conectarse sin proporcionar una contraseña si no se establece ninguna contraseña.
Los únicos complementos de autenticación que admite esta cláusula son mysql_native_password
y mysql_old_password
.
IDENTIFICADO POR CONTRASEÑA ‘password_hash’
El opcional IDENTIFIED BY PASSWORD
La cláusula se puede utilizar para proporcionar una cuenta con una contraseña que ya se ha codificado. La contraseña debe especificarse como un hash proporcionado por el PASSWORD
función. Se almacenará en el mysql.user
tabla como está.
Por ejemplo, si nuestra contraseña es mariadb
, luego podemos encontrar el hash con:
SELECT PASSWORD('mariadb');+-------------------------------------------+| PASSWORD('mariadb')|+-------------------------------------------+|*54958E764CE10E50764C2EECBB71D01F08549980 |+-------------------------------------------+1rowinset(0.00 sec)
Y luego podemos establecer la contraseña de una cuenta con el hash:
ALTERUSER foo2@test IDENTIFIED BY PASSWORD '*54958E764CE10E50764C2EECBB71D01F08549980';
Si no especifica una contraseña con el IDENTIFIED BY
cláusula, el usuario podrá conectarse sin contraseña. Una contraseña en blanco no es un comodín para coincidir con ninguna contraseña. El usuario debe conectarse sin proporcionar una contraseña si no se establece ninguna contraseña.
Los únicos complementos de autenticación que admite esta cláusula son mysql_native_password
y mysql_old_password
.
IDENTIFICADO WITH authentication_plugin
El opcional IDENTIFIED VIA authentication_plugin
le permite especificar que la cuenta debe ser autenticada por un complemento de autenticación específico. El nombre del complemento debe ser un complemento de autenticación activo según SHOW PLUGINS
. Si no aparece en esa salida, deberá instalarlo con INSTALL PLUGIN
o INSTALL SONAME
.
Por ejemplo, esto podría usarse con el complemento de autenticación PAM:
ALTERUSER foo2@test IDENTIFIED VIA pam;
Algunos complementos de autenticación permiten especificar argumentos adicionales después de una USING
o AS
palabra clave. Por ejemplo, el complemento de autenticación PAM acepta un nombre de servicio:
ALTERUSER foo2@test IDENTIFIED VIA pam USING'mariadb';
El significado exacto del argumento adicional dependería del complemento de autenticación específico.
En MariaDB 10.4 y posteriores, el USING
o AS
La palabra clave también se puede utilizar para proporcionar una contraseña de texto sin formato a un complemento si se proporciona como un argumento para la función PASSWORD (). Esto solo es válido para complementos de autenticación que han implementado un enlace para la función PASSWORD (). Por ejemplo, el ed25519
El complemento de autenticación admite esto:
ALTERUSER safe@'%' IDENTIFIED VIA ed25519 USING PASSWORD('secret');
Opciones de TLS
De forma predeterminada, MariaDB transmite datos entre el servidor y los clientes sin cifrarlos. Esto es generalmente aceptable cuando el servidor y el cliente se ejecutan en el mismo host o en redes donde la seguridad está garantizada por otros medios. Sin embargo, en los casos en que el servidor y el cliente existen en redes separadas o están en una red de alto riesgo, la falta de cifrado introduce problemas de seguridad, ya que un actor malintencionado podría espiar el tráfico a medida que se envía a través de la red entre ellos. .
Para mitigar esta preocupación, MariaDB le permite cifrar los datos en tránsito entre el servidor y los clientes mediante el protocolo Transport Layer Security (TLS). TLS se conocía anteriormente como Secure Socket Layer (SSL), pero estrictamente hablando, el protocolo SSL es un predecesor de TLS y esa versión del protocolo ahora se considera insegura. La documentación todavía usa el término SSL a menudo y, por razones de compatibilidad, el sistema de servidor relacionado con TLS y las variables de estado aún usan el prefijo ssl_, pero internamente, MariaDB solo admite sus sucesores seguros.
Consulte Descripción general de conexiones seguras para obtener más información sobre cómo determinar si su servidor MariaDB tiene soporte TLS.
Puede establecer ciertas restricciones relacionadas con TLS para cuentas de usuario específicas. Por ejemplo, puede usar esto con cuentas de usuario que requieren acceso a datos confidenciales mientras los envían a través de redes que no controla. Estas restricciones se pueden habilitar para una cuenta de usuario con el CREATE USER
, ALTER USER
, o GRANT
declaraciones. Las siguientes opciones están disponibles:
Opción | Descripción |
---|---|
REQUIRE NONE |
TLS no es necesario para esta cuenta, pero aún se puede usar. |
REQUIRE SSL |
La cuenta debe usar TLS, pero no se requiere un certificado X509 válido. Esta opción no se puede combinar con otras opciones de TLS. |
REQUIRE X509 |
La cuenta debe usar TLS y debe tener un certificado X509 válido. Esta opción implica REQUIRE SSL . Esta opción no se puede combinar con otras opciones de TLS. |
REQUIRE ISSUER 'issuer' |
La cuenta debe usar TLS y debe tener un certificado X509 válido. Además, la autoridad de certificación debe ser la especificada a través de la cadena issuer . Esta opción implica REQUIRE X509 . Esta opción se puede combinar con la SUBJECT , y CIPHER opciones en cualquier orden. |
REQUIRE SUBJECT 'subject' |
La cuenta debe usar TLS y debe tener un certificado X509 válido. Además, el Asunto del certificado debe ser el especificado a través de la cadena subject . Esta opción implica REQUIRE X509 . Esta opción se puede combinar con la ISSUER , y CIPHER opciones en cualquier orden. |
REQUIRE CIPHER 'cipher' |
La cuenta debe usar TLS, pero no se requiere un certificado X509 válido. Además, el cifrado utilizado para la conexión debe utilizar uno de los métodos especificados en la cadena cipher . Esta opción implica REQUIRE SSL . Esta opción se puede combinar con la ISSUER , y SUBJECT opciones en cualquier orden. |
los REQUIRE
La palabra clave debe usarse solo una vez para todas las opciones especificadas, y la AND
La palabra clave se puede utilizar para separar opciones individuales, pero no es necesaria.
Por ejemplo, puede modificar una cuenta de usuario para requerir estas opciones de TLS con lo siguiente:
ALTERUSER'alice'@'%'REQUIRE SUBJECT '/CN=alice/O=My Dom, Inc./C=US/ST=Oregon/L=Portland'AND ISSUER '/C=FI/ST=Somewhere/L=City/ O=Some Company/CN=Peter Parker/[email protected]'AND CIPHER 'TLSv1.2';
Si alguna de estas opciones está configurada para una cuenta de usuario específica, entonces cualquier cliente que intente conectarse con esa cuenta de usuario deberá estar configurado para conectarse con TLS.
Consulte Protección de las conexiones para el cliente y el servidor para obtener información sobre cómo habilitar TLS en el cliente y el servidor.
Opciones de límite de recursos
MariaDB comenzando con 10.2.0
MariaDB 10.2.0 introdujo una serie de opciones de límite de recursos.
Es posible establecer límites por cuenta para ciertos recursos del servidor. La siguiente tabla muestra los valores que se pueden establecer por cuenta:
Tipo de límite | Descripción |
---|---|
MAX_QUERIES_PER_HOUR |
Número de extractos que la cuenta puede emitir por hora (incluidas las actualizaciones) |
MAX_UPDATES_PER_HOUR |
Número de actualizaciones (no consultas) que la cuenta puede emitir por hora |
MAX_CONNECTIONS_PER_HOUR |
Número de conexiones que la cuenta puede iniciar por hora |
MAX_USER_CONNECTIONS |
Número de conexiones simultáneas que se pueden aceptar desde la misma cuenta; si es 0, max_connections se utilizará en su lugar; si max_connections es 0, no hay límite para las conexiones simultáneas de esta cuenta. |
MAX_STATEMENT_TIME |
Tiempo de espera, en segundos, para declaraciones ejecutadas por el usuario. Consulte también Cancelación de declaraciones que superan un cierto tiempo para ejecutarse. |
Si alguno de estos límites se establece en 0
, entonces no hay límite para ese recurso para ese usuario.
A continuación, se muestra un ejemplo que muestra cómo establecer los límites de recursos de una cuenta:
ALTERUSER'someone'@'localhost'WITH MAX_USER_CONNECTIONS 10 MAX_QUERIES_PER_HOUR 200;
Los recursos se rastrean por cuenta, lo que significa 'user'@'server'
; no por nombre de usuario o por conexión.
El recuento se puede restablecer para todos los usuarios que utilizan FLUSH USER_RESOURCES
, FLUSH PRIVILEGES
o mysqladmin reload
.
Los límites de recursos por cuenta se almacenan en el user
mesa, en el mysql
base de datos. Las columnas utilizadas para los límites de recursos se nombran max_questions
, max_updates
, max_connections
(por MAX_CONNECTIONS_PER_HOUR
), y max_user_connections
(por MAX_USER_CONNECTIONS
).
Caducidad de la contraseña
MariaDB comenzando con 10.4.3
Además de la caducidad automática de la contraseña, según lo determinado por default_password_lifetime, los tiempos de caducidad de la contraseña se pueden configurar para cada usuario individual, anulando la configuración global, por ejemplo:
ALTERUSER'monty'@'localhost' PASSWORD EXPIRE INTERVAL120DAY;ALTERUSER'monty'@'localhost' PASSWORD EXPIRE NEVER;ALTERUSER'monty'@'localhost' PASSWORD EXPIRE DEFAULT;
Consulte Caducidad de la contraseña de usuario para obtener más detalles.
Bloqueo de cuenta
MariaDB comenzando con 10.4.2
El bloqueo de cuentas permite a los administradores privilegiados bloquear / desbloquear cuentas de usuario. No se permitirán nuevas conexiones de cliente si una cuenta está bloqueada (las conexiones existentes no se ven afectadas). Por ejemplo:
ALTERUSER'marijn'@'localhost' ACCOUNT LOCK;
Consulte Bloqueo de cuenta para obtener más detalles.
Ver también
- Autenticación de MariaDB 10.4
- CONCEDER
- CREAR USUARIO
- SOLICITAR USUARIO
- CONFIGURAR LA CLAVE
- MOSTRAR CREAR USUARIO
- tabla mysql.user
- Complementos de validación de contraseñas: permite establecer criterios básicos para las contraseñas.
- Complementos de autenticación: permiten utilizar varios métodos de autenticación y desarrollar otros nuevos.
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.