13.7.1.10 IMPOSTA l’istruzione PASSWORD
L’istruzione SET PASSWORDassegna 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 PASSWORDper 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'
-
REPLACEspecifica 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.
-
REPLACEpuò 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 PASSWORDmantiene 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 PASSWORDper 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_optionsintassi:
-
= 'auth_string'Assegna l’account la password letterale data.
-
TO RANDOMAssegna 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
FORclausola, l’istruzione imposta la password per l’account dal nome, che deve esistere:userSET PASSWORD FOR 'jeffrey'@'localhost' = 'auth_string'; -
senza
FORclausola, l’istruzione imposta la password per l’utente corrente:userSET 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_ADMINprivilegi è necessario utilizzare il tagRETAIN CURRENT PASSWORDarticoloSET PASSWORDistruzioni 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 USERanziché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”.