13.7.1.10 SET PASSWORD Statement
13.7.1.10 SET PASSWORD Statement
l’instruction SET PASSWORD
attribue un mot de passe à un compte utilisateur MySQL. Le mot de passe peut être spécifié explicitement dans l’instruction ou généré aléatoirement par MySQL. L’instruction peut également inclure une clause de vérification de mot de passe qui spécifie le mot de passe actuel du compte à remplacer, et une clause qui gère si un compte dispose d’un mot de passe secondaire., '
et auth_string
''
représentent chacun un texte en clair (non chiffré) mot de passe.current_auth_string
'
plutôt que d’utiliserSET PASSWORD
pour attribuer des mots de passe,ALTER USER
est l’instruction préférée pour les modifications de compte, y compris l’attribution de mots de passe., Par exemple:
ALTER USER user IDENTIFIED BY 'auth_string';
Les Clauses de génération aléatoire de mot de passe, de vérification de mot de passe et de mots de passe secondaires s’appliquent uniquement aux comptes qui utilisent un plugin d’authentification qui stocke les informations d’identification en interne Pour les comptes qui utilisent un plugin qui effectue l’authentification sur un système d’informations d’identification externe à MySQL, la gestion des mots de passe doit également être gérée en externe sur ce système. Pour plus d’informations sur le stockage interne des informations d’identification, reportez-vous à la Section 6.2.15, « gestion des mots de passe”.,
la clauseREPLACE '
effectue la vérification du mot de passe et est disponible à partir de MySQL 8.0.13. Si cela est donné:current_auth_string
'
-
REPLACE
spécifie le mot de passe actuel du compte à remplacer, sous forme de chaîne en texte clair (non chiffrée). -
la clause doit être donnée si des modifications de mot de passe pour le compte sont nécessaires pour spécifier le mot de passe actuel, afin de vérifier que l’utilisateur qui tente d’effectuer la modification connaît réellement le mot de passe actuel.,
-
la clause est facultative si les changements de mot de passe pour le compte peuvent mais n’ont pas besoin de spécifier le mot de passe actuel.
-
L’instruction échoue si la clause est donné, mais ne correspond pas au mot de passe actuel, même si la clause est facultative.
-
REPLACE
ne peut être spécifié que lors de la modification du mot de passe du compte pour l’utilisateur actuel.
pour plus d’informations sur la vérification du mot de passe en spécifiant le mot de passe actuel, reportez-vous à la Section 6.2.15, « gestion des mots de passe”.,
la clauseRETAIN CURRENT PASSWORD
implémente la capacité de double mot de passe et est disponible à partir de MySQL 8.0.14. Si cela est donné:
-
RETAIN CURRENT PASSWORD
conserve le mot de passe actuel du compte comme mot de passe secondaire, remplaçant tout mot de passe secondaire existant. Le nouveau mot de passe devient le mot de passe principal, mais les clients peuvent utiliser le compte pour se connecter au serveur à l’aide du mot de passe principal ou secondaire., (Exception: si le nouveau mot de passe spécifié par l’instructionSET PASSWORD
est vide, le mot de passe secondaire le devient également, même siRETAIN CURRENT PASSWORD
est donné.) -
Si vous spécifiez
RETAIN CURRENT PASSWORD
pour un compte dont le mot de passe principal est vide, l’instruction échoue. -
Si un compte a un mot de passe secondaire et que vous modifiez son mot de passe principal sans spécifier
RETAIN CURRENT PASSWORD
, le mot de passe secondaire reste inchangé.
Pour plus d’informations sur l’utilisation de deux mots de passe, voir la Section 6.2.,15,”Gestion Des Mots De Passe ».
SET PASSWORD
permet à ces auth_option
syntaxe:
-
= '
auth_string
'Affecte le compte de la donnée littéral du mot de passe.
-
TO RANDOM
attribue au compte un mot de passe généré aléatoirement par MySQL. L’instruction renvoie également le mot de passe en texte clair dans un jeu de résultats pour le rendre disponible pour l’utilisateur ou l’application exécutant l’instruction.,
pour plus de détails sur le jeu de résultats et les caractéristiques des mots de passe générés aléatoirement, voir génération aléatoire de mots de passe.
la génération aléatoire de mots de passe est disponible à partir de MySQL 8.0.18.
dans certaines circonstances, SET PASSWORD
peut être enregistré dans les journaux du serveur ou du côté client dans un fichier d’historique tel que ~/.mysql_history
, ce qui signifie que lire par toute personne ayant lu l’accès à cette information., Pour plus d’informations sur les conditions dans lesquelles cela se produit pour les journaux du serveur et comment le contrôler, reportez-vous à la Section 6.1.2.3, « mots de passe et journalisation”. Pour des informations similaires sur la journalisation côté client, reportez-vous à la Section 4.5.1.3, « journalisation client mysql”.,p> SET PASSWORD
peut être utilisé avec ou sans une clause FOR
qui nomme explicitement un compte utilisateur:
-
avec un
FOR
l’instruction définit le mot de passe pour le compte nommé, qui doit exister:user
SET PASSWORD FOR 'jeffrey'@'localhost' = 'auth_string';
-
sans
FOR
, l’instruction définit le mot de passe pour l’utilisateur actuel:user
SET PASSWORD = 'auth_string';
e connecte au serveur à l’aide d’un compte non anonyme peut modifier le mot de passe de ce compte., (En particulier, vous pouvez modifier votre propre mot de passe. Pour voir quel compte le serveur vous a authentifié, invoquez la fonction
CURRENT_USER()
:SELECT CURRENT_USER();
Si une clause FOR
est donnée, le nom du compte utilise le format décrit dans la Section 6.2.4, « spécification des noms de Compte”. Par exemple: user
SET PASSWORD FOR 'bob'@'%.example.org' = 'auth_string';
la partie nom d’hôte du nom du compte, si elle est omise, est par défaut '%'
.,
SET PASSWORD
interprète la chaîne comme une chaîne en clair, la transmet au plugin d’authentification associé au compte et stocke le résultat renvoyé par le plugin dans la ligne de compte de la table systèmemysql.user
. (Le plugin a la possibilité de hacher la valeur dans le format de cryptage qu’il attend. Le plugin peut utiliser la valeur spécifiée, auquel cas aucun hachage ne se produit.,)
La définition du mot de passe pour un compte nommé (avec une clauseFOR
) nécessite le privilègeUPDATE
pour le schéma systèmemysql
. La définition du mot de passe pour vous-même (pour un compte non anonyme sans clause FOR
) ne nécessite aucun privilège spécial.,
les instructions qui modifient les mots de passe secondaires nécessitent ces privilèges:
-
le privilège
APPLICATION_PASSWORD_ADMIN
est requis pour utiliser la clauseRETAIN CURRENT PASSWORD
pourSET PASSWORD
relevés qui s’appliquent à votre propre compte. Le privilège est requis pour manipuler votre propre mot de passe secondaire, car la plupart des utilisateurs n’ont besoin que d’un seul mot de passe., -
Si un compte doit être autorisé à manipuler des mots de passe secondaires pour tous les comptes, le privilège
CREATE USER
devrait lui être accordé plutôt queAPPLICATION_PASSWORD_ADMIN
.
lorsque la variable système read_only
est activée, SET PASSWORD
nécessite le privilège CONNECTION_ADMIN
(ou le privilège SUPER
obsolète privilège), en plus de tout autre privilège requis.
pour plus d’informations sur la définition des mots de passe et des plugins d’authentification, reportez-vous à la Section 6.2.,14, » attribution de mots de passe de Compte”, et Section 6.2.17, « authentification enfichable”.