13.7.1.10 IMPOSTA l’istruzione PASSWORD
L’istruzione SET PASSWORD
assegna una password a un account utente MySQL. La password può essere specificata esplicitamente nell’istruzione o generata casualmente da MySQL. L’istruzione può anche includere una clausola di verifica della password che specifica la password corrente dell’account da sostituire e una clausola che gestisce se un account ha una password secondaria., '
e auth_string
''
rappresentano ciascuna una password in chiaro (non crittografata).current_auth_string
'
Invece di usare SET PASSWORD
per assegnare le password, ALTER USER
è l’istruzione preferita per le modifiche dell’account, inclusa l’assegnazione delle password., Ad esempio:
ALTER USER user IDENTIFIED BY 'auth_string';
Le clausole per la generazione casuale di password, la verifica della password e le password secondarie si applicano solo agli account che utilizzano un plugin di autenticazione che memorizza le credenziali internamente a MySQL. Per gli account che utilizzano un plugin che esegue l’autenticazione contro un sistema di credenziali esterno a MySQL, la gestione delle password deve essere gestita esternamente anche contro quel sistema. Per ulteriori informazioni sull’archiviazione interna delle credenziali, vedere Sezione 6.2.15, “Gestione delle password”.,
La clausolaREPLACE '
esegue la verifica della password ed è disponibile da MySQL 8.0.13. Se specificato:current_auth_string
'
-
REPLACE
specifica la password corrente dell’account da sostituire, come stringa in chiaro (non crittografata). -
La clausola deve essere fornita se sono necessarie modifiche della password per l’account per specificare la password corrente, come verifica che l’utente che tenta di apportare la modifica conosca effettivamente la password corrente.,
-
La clausola è facoltativa se le modifiche della password per l’account possono ma non è necessario specificare la password corrente.
-
L’istruzione non riesce se viene fornita la clausola ma non corrisponde alla password corrente, anche se la clausola è facoltativa.
-
REPLACE
può essere specificato solo quando si modifica la password dell’account per l’utente corrente.
Per ulteriori informazioni sulla verifica della password specificando la password corrente, vedere Sezione 6.2.15, “Gestione password”.,
La clausolaRETAIN CURRENT PASSWORD
implementa la funzionalità dual-password ed è disponibile da MySQL 8.0.14. Se specificato:
-
RETAIN CURRENT PASSWORD
mantiene una password corrente dell’account come password secondaria, sostituendo qualsiasi password secondaria esistente. La nuova password diventa la password principale, ma i client possono utilizzare l’account per connettersi al server utilizzando la password primaria o secondaria., (Eccezione: se la nuova password specificata dall’istruzioneSET PASSWORD
è vuota, anche la password secondaria diventa vuota, anche se viene fornitaRETAIN CURRENT PASSWORD
.) -
Se si specifica
RETAIN CURRENT PASSWORD
per un account con una password primaria vuota, l’istruzione non riesce. -
Se un account ha una password secondaria e si modifica la password primaria senza specificare
RETAIN CURRENT PASSWORD
, la password secondaria rimane invariata.
Per ulteriori informazioni sull’uso di password doppie, vedere Sezione 6.2.,15, “Gestione delle password”.
SET PASSWORD
consente questiauth_option
sintassi:
-
= '
auth_string
'Assegna l’account la password letterale data.
-
TO RANDOM
Assegna all’account una password generata casualmente da MySQL. L’istruzione restituisce anche la password in chiaro in un set di risultati per renderla disponibile all’utente o all’applicazione che esegue l’istruzione.,
Per i dettagli sul set di risultati e le caratteristiche delle password generate casualmente, vedere Generazione casuale di password.
La generazione casuale di password è disponibile a partire da MySQL 8.0.18.
In alcuni casi, SET PASSWORD
può essere registrato nei log del server o sul client in un file di storia come ~/.mysql_history
il che significa che chiaro le password possono essere letti da chiunque abbia accesso in lettura alle informazioni., Per informazioni sulle condizioni in cui ciò si verifica per i log del server e su come controllarlo, vedere Sezione 6.1.2.3, “Password e registrazione”. Per informazioni simili sulla registrazione lato client, vedere Sezione 4.5.1.3, “Registrazione client mysql”.,p> SET PASSWORD
può essere utilizzato con o senza un FOR
clausola che espressamente il nome di un account utente:
-
Con un
FOR
clausola, l’istruzione imposta la password per l’account dal nome, che deve esistere:user
SET PASSWORD FOR 'jeffrey'@'localhost' = 'auth_string';
-
senza
FOR
clausola, l’istruzione imposta la password per l’utente corrente:user
SET PASSWORD = 'auth_string';
Ogni client che si connette al server utilizzando un account anonimi possibile modificare la password per l’account., (In particolare, è possibile modificare la propria password.) Per vedere quale account il server ti ha autenticato, invoca la funzione
CURRENT_USER()
:SELECT CURRENT_USER();
Se viene fornita una clausola FOR
, il nome dell’account utilizza il formato descritto nella sezione 6.2.4, “Specificare i nomi degli account”. Ad esempio: user
SET PASSWORD FOR 'bob'@'%.example.org' = 'auth_string';
La parte del nome host del nome account, se omessa, viene impostata su '%'
.,
SET PASSWORD
interpreta la stringa come una stringa di testo chiaro, la passa al plugin di autenticazione associato all’account e memorizza il risultato restituito dal plugin nella riga dell’account nella tabella di sistema mysql.user
. (Il plugin ha la possibilità di hash il valore nel formato di crittografia che si aspetta. Il plugin può utilizzare il valore come specificato, nel qual caso non si verifica alcun hashing.,)
L’impostazione della password per un account con nome (con una clausolaFOR
) richiede il privilegioUPDATE
per lo schema di sistemamysql
. L’impostazione della password per se stessi (per un account non anonimo con nessuna clausolaFOR
) non richiede privilegi speciali.,
Istruzioni che modificano secondaria password richiedono questi privilegi:
-
APPLICATION_PASSWORD_ADMIN
privilegi è necessario utilizzare il tagRETAIN CURRENT PASSWORD
articoloSET PASSWORD
istruzioni che si applicano al vostro account. Il privilegio è necessario per manipolare la propria password secondaria perché la maggior parte degli utenti richiede solo una password., -
Se un account deve essere autorizzato a manipolare password secondarie per tutti gli account, dovrebbe essere concesso il privilegio
CREATE USER
anzichéAPPLICATION_PASSWORD_ADMIN
.
Quando la variabile di sistema read_only
è abilitata, SET PASSWORD
richiede il privilegio CONNECTION_ADMIN
(o la deprecata SUPER
privilegio), oltre a qualsiasi altro privilegio richiesto.
Per ulteriori informazioni sull’impostazione di password e plugin di autenticazione, vedere Sezione 6.2.,14, “Assegnazione delle password dell’account” e Sezione 6.2.17, “Autenticazione collegabile”.