13.7.1.10 SET PASSWORD Statement
la instrucciónSET PASSWORD
asigna una contraseña a una cuenta de usuario de MySQL. La contraseña puede ser especificada explícitamente en la instrucción o generada aleatoriamente por MySQL. La declaración también puede incluir una cláusula de verificación de contraseña que especifique la contraseña actual de la cuenta que se reemplazará, y una cláusula que administre si una cuenta tiene una contraseña secundaria., '
y auth_string
''
representan una contraseña de texto claro (sin cifrar).current_auth_string
'
en lugar de usar SET PASSWORD
para asignar contraseñas, ALTER USER
es la instrucción preferida para las alteraciones de la cuenta, incluida la asignación de contraseñas., Por ejemplo:
ALTER USER user IDENTIFIED BY 'auth_string';
Las cláusulas para la generación aleatoria de contraseñas, la verificación de contraseñas y las contraseñas secundarias solo se aplican a las cuentas que utilizan un complemento de autenticación que almacena las credenciales internamente en MySQL. Para las cuentas que utilizan un complemento que realiza la autenticación contra un sistema de credenciales que es externo a MySQL, la administración de contraseñas también debe manejarse externamente contra ese sistema. Para obtener más información sobre el almacenamiento interno de credenciales, consulte la sección 6.2.15,»administración de contraseñas».,
la cláusulaREPLACE '
realiza la verificación de contraseña y está disponible a partir de MySQL 8.0.13. Si se indica:current_auth_string
'
-
REPLACE
especifica la contraseña actual de la cuenta que se reemplazará, como una cadena de texto claro (sin cifrar). -
la cláusula debe darse si se requieren cambios de contraseña para la cuenta para especificar la contraseña actual, como verificación de que el usuario que intenta realizar el cambio realmente conoce la contraseña actual.,
-
la cláusula es opcional si los cambios de contraseña para la cuenta pueden pero no necesitan especificar la contraseña actual.
-
la instrucción falla si se da la cláusula pero no coincide con la contraseña actual, incluso si la cláusula es opcional.
-
REPLACE
solo se puede especificar al cambiar la contraseña de la cuenta para el usuario actual.
para obtener más información sobre la verificación de contraseñas especificando la contraseña actual, consulte la sección 6.2.15,»administración de contraseñas».,
la cláusula RETAIN CURRENT PASSWORD
implementa la capacidad de doble contraseña y está disponible a partir de MySQL 8.0.14. Si se indica:
-
RETAIN CURRENT PASSWORD
conserva una contraseña actual de la cuenta como su contraseña secundaria, reemplazando cualquier contraseña secundaria existente. La nueva contraseña se convierte en la contraseña principal, pero los clientes pueden usar la cuenta para conectarse al servidor utilizando la contraseña principal o secundaria., (Excepción: si la nueva contraseña especificada por la instrucciónSET PASSWORD
está vacía, la contraseña secundaria también se vacía, incluso si se daRETAIN CURRENT PASSWORD
.) -
si especifica
RETAIN CURRENT PASSWORD
para una cuenta que tiene una contraseña primaria vacía, la instrucción falla. -
si una cuenta tiene una contraseña secundaria y cambia su contraseña primaria sin especificar
RETAIN CURRENT PASSWORD
, la contraseña secundaria permanece sin cambios.
para obtener más información sobre el uso de contraseñas duales, consulte la Sección 6.2.,15, «Gestión De Contraseñas».
SET PASSWORD
permite que estos auth_option
sintaxis:
-
= '
auth_string
'Asigna la cuenta de que el dado literal contraseña.
-
TO RANDOM
Asigna una contraseña a la cuenta generada aleatoriamente por MySQL. La instrucción también devuelve la contraseña de texto claro en un conjunto de resultados para que esté disponible para el usuario o la aplicación que ejecuta la instrucción.,
para obtener más información sobre el conjunto de resultados y las características de las contraseñas generadas aleatoriamente, consulte generación aleatoria de contraseñas.
la generación aleatoria de contraseñas está disponible a partir de MySQL 8.0.18.
en algunas circunstancias, SET PASSWORD
puede registrarse en los registros del servidor o en el lado del cliente en un archivo de historial como ~/.mysql_history
, lo que significa que ser leído por cualquier persona que haya leído acceso a esa información., Para obtener información sobre las condiciones en las que esto ocurre para los registros del servidor y cómo controlarlo, consulte la sección 6.1.2.3, «contraseñas y registro». Para obtener información similar sobre el registro del lado del cliente, consulte la sección 4.5.1.3, «registro del cliente mysql».,p> SET PASSWORD
se puede utilizar con o sin una cláusula FOR
que nombra explícitamente una cuenta de usuario:
-
con una
FOR
clause, the statement sets the password for the named account, which must exist:user
SET PASSWORD FOR 'jeffrey'@'localhost' = 'auth_string';
-
with no
FOR
clause, the statement sets the password for the current user:user
SET PASSWORD = 'auth_string';
any El cliente que se conecta al servidor mediante una cuenta no anónima puede cambiar la contraseña de esa cuenta., (En particular, puede cambiar su propia contraseña.) Para ver con qué cuenta te autenticó el servidor, invoca la función
CURRENT_USER()
:SELECT CURRENT_USER();
Si se da una cláusula FOR
, el nombre de la cuenta utiliza el formato descrito en la sección 6.2.4, «especificar nombres de cuenta». Por ejemplo: user
SET PASSWORD FOR 'bob'@'%.example.org' = 'auth_string';
la parte del nombre de host del nombre de cuenta, si se omite, por defecto es '%'
.,
SET PASSWORD
interpreta la cadena como una cadena de texto claro, la pasa al complemento de autenticación asociado con la cuenta y almacena el resultado devuelto por el complemento en la fila de la cuenta en la tabla del sistema mysql.user
. (El plugin se le da la oportunidad de hash el valor en el formato de Cifrado que espera. El plugin puede utilizar el valor especificado, en cuyo caso no se produce ningún hash.,)
establecer la contraseña para una cuenta con nombre (con una cláusula FOR
) requiere el privilegio UPDATE
para el esquema del sistema mysql
. Configurar la contraseña para usted (para una cuenta no anónima sin la cláusula FOR
) no requiere privilegios especiales.,
Las declaraciones que modifican contraseñas secundarias requieren estos privilegios:
-
el privilegio
APPLICATION_PASSWORD_ADMIN
se requiere para usar la cláusulaRETAIN CURRENT PASSWORD
paraSET PASSWORD
estados de cuenta que se aplican a su propia cuenta. El privilegio es necesario para manipular su propia contraseña secundaria porque la mayoría de los usuarios solo requieren una contraseña., -
si se permite a una cuenta manipular contraseñas secundarias para todas las cuentas, se le debe otorgar el privilegio
CREATE USER
en lugar deAPPLICATION_PASSWORD_ADMIN
.
Cuando la variable de sistema read_only
está habilitada, SET PASSWORD
requiere el privilegio CONNECTION_ADMIN
(o el privilegio>privilegio), además de cualquier otro privilegio requerido.
para obtener información adicional sobre la configuración de contraseñas y complementos de autenticación, consulte la Sección 6.2.,14, «asignación de contraseñas de cuentas», y sección 6.2.17,»autenticación conectable».