13.7.1.10 SET PASSWORD Statement
de SET PASSWORD
statement wijst een wachtwoord toe aan een MySQL-gebruikersaccount. Het wachtwoord kan expliciet worden gespecificeerd in de statement of willekeurig gegenereerd door MySQL. De verklaring kan ook een password-verification clausule bevatten die het huidige wachtwoord van de account specificeert dat moet worden vervangen, en een clausule die beheert of een account een secundair wachtwoord heeft., 'auth_string
'
en 'current_auth_string
'
vertegenwoordigen elk een leesbaar (niet-versleuteld) wachtwoord.
Note
in plaats van SET PASSWORD
te gebruiken om wachtwoorden toe te wijzen, is ALTER USER
de voorkeursverklaring voor accountwijzigingen, inclusief het toewijzen van wachtwoorden., Bijvoorbeeld:
ALTER USER user IDENTIFIED BY 'auth_string';
opmerking
clausules voor willekeurige wachtwoordgeneratie, wachtwoordverificatie en secundaire wachtwoorden zijn alleen van toepassing op accounts die een authenticatieplugin gebruiken die referenties intern opslaat in MySQL. Voor accounts die een plugin gebruiken die authenticatie uitvoert tegen een aanmeldingssysteem dat extern is aan MySQL, moet wachtwoordbeheer ook extern worden afgehandeld tegen dat systeem. Zie paragraaf 6.2.15, “wachtwoordbeheer”voor meer informatie over het opslaan van interne referenties.,
deREPLACE 'current_auth_string
'
clausule voert wachtwoordverificatie uit en is beschikbaar vanaf MySQL 8.0.13. Indien gegeven:
-
REPLACE
specificeert het huidige wachtwoord dat moet worden vervangen, als een niet-versleutelde tekenreeks.
-
de clausule moet worden opgegeven als wachtwoordwijzigingen voor het account vereist zijn om het huidige wachtwoord te specificeren, als verificatie dat de gebruiker die de wijziging probeert aan te brengen het huidige wachtwoord daadwerkelijk kent.,
-
de clausule is optioneel als wachtwoordwijzigingen voor het account mogelijk zijn, maar niet het huidige wachtwoord hoeven te specificeren.
-
het statement mislukt als de clausule wordt gegeven, maar komt niet overeen met het huidige wachtwoord, zelfs als de clausule optioneel is.
-
REPLACE
kan alleen worden opgegeven bij het wijzigen van het accountwachtwoord voor de huidige gebruiker.
voor meer informatie over wachtwoordverificatie door het huidige wachtwoord op te geven, zie paragraaf 6.2.15, “Wachtwoordbeheer”.,
de RETAIN CURRENT PASSWORD
clausule implementeert dual-password mogelijkheid en is beschikbaar vanaf MySQL 8.0.14. Indien gegeven:
-
RETAIN CURRENT PASSWORD
behoudt het huidige wachtwoord van de rekening als secundaire wachtwoord, ter vervanging van een bestaand secundair wachtwoord. Het nieuwe wachtwoord wordt het primaire wachtwoord, maar clients kunnen het account gebruiken om verbinding te maken met de server met behulp van het primaire of secundaire wachtwoord., (Uitzondering: als het nieuwe wachtwoord opgegeven door de instructie SET PASSWORD
leeg is, wordt het secundaire wachtwoord ook leeg, zelfs als RETAIN CURRENT PASSWORD
wordt gegeven.)
-
Als u RETAIN CURRENT PASSWORD
opgeeft voor een account met een leeg primair wachtwoord, mislukt het statement.
-
als een account een secundair wachtwoord heeft en u het primaire wachtwoord wijzigt zonder RETAIN CURRENT PASSWORD
op te geven, blijft het secundaire wachtwoord ongewijzigd.
voor meer informatie over het gebruik van dubbele wachtwoorden, zie paragraaf 6.2.,15, “Password Management”.
SET PASSWORD
staat deze toe auth_option
syntaxes:
-
= 'auth_string
'
wijst het opgegeven letterlijke wachtwoord toe.
-
TO RANDOM
wijst het account een willekeurig door MySQL gegenereerd wachtwoord toe. Het statement retourneert ook het leesbare wachtwoord in een resultaatset om het beschikbaar te maken voor de gebruiker of toepassing die het statement uitvoert.,
voor details over de resultaatset en kenmerken van Willekeurig gegenereerde wachtwoorden, zie willekeurige Wachtwoordgeneratie.
willekeurige wachtwoordgeneratie is beschikbaar vanaf MySQL 8.0.18.
belangrijk
onder sommige omstandigheden kan SET PASSWORD
worden opgenomen in serverlogboeken of aan de clientzijde in een geschiedenisbestand zoals ~/.mysql_history
, wat betekent dat leesbare wachtwoorden kunnen worden gelezen door iedereen die leestoegang heeft tot die informatie., Zie paragraaf 6.1.2.3, “wachtwoorden en Logging”voor informatie over de omstandigheden waaronder dit gebeurt voor de serverlogboeken en hoe deze te beheren. Voor soortgelijke informatie over logging aan de clientzijde, zie paragraaf 4.5.1.3 ,” MySQL Client Logging”.,p> SET PASSWORD
kan worden gebruikt met of zonder een FOR
clausule die expliciet de namen van een gebruiker account:
-
Met een FOR user
component, de verklaring stelt het wachtwoord in voor de account met de naam, die moet bestaan:
SET PASSWORD FOR 'jeffrey'@'localhost' = 'auth_string';
-
geen FOR user
component, de verklaring stelt het wachtwoord in voor de huidige gebruiker:
SET PASSWORD = 'auth_string';
Elke client die verbinding maakt met de server met behulp van een nonanonymous account kunt het wachtwoord voor dat account., (In het bijzonder kunt u uw eigen wachtwoord wijzigen.) Om te zien met welk account de server u heeft geauthenticeerd, roept u de CURRENT_USER()
functie:
SELECT CURRENT_USER();
als eenFOR user
clausule wordt gegeven, gebruikt de accountnaam het formaat beschreven in Paragraaf 6.2.4, “accountnamen specificeren”. Bijvoorbeeld:
SET PASSWORD FOR 'bob'@'%.example.org' = 'auth_string';
het hostnaam deel van de accountnaam, indien weggelaten, is standaard '%'
.,
SET PASSWORD
interpreteert de tekenreeks als een tekenreeks zonder tekst, geeft deze door aan de authenticatie-plugin die aan het account is gekoppeld, en slaat het resultaat op dat door de plugin wordt geretourneerd in de account-rij in de mysql.user
systeemtabel. (De plugin krijgt de mogelijkheid om hash de waarde in de encryptie formaat verwacht. De plugin mag de opgegeven waarde gebruiken, in welk geval geen hashing plaatsvindt.,)
Het instellen van het wachtwoord voor een benoemde account (met een FOR
clausule) vereist het UPDATE
privilege voor het mysql
systeemschema. Het instellen van het wachtwoord voor uzelf (voor een niet-gelijknamige account zonder FOR
clausule) vereist geen speciale privileges.,
Statements die secundaire wachtwoorden wijzigen vereisen deze privileges:
-
de APPLICATION_PASSWORD_ADMIN
privilege is vereist om de RETAIN CURRENT PASSWORD
clausule te gebruiken voor SET PASSWORD
statements die van toepassing zijn op uw eigen account. Het privilege is vereist om uw eigen secundaire wachtwoord te manipuleren omdat de meeste gebruikers slechts één wachtwoord nodig hebben.,
-
als een account secundaire wachtwoorden voor alle accounts mag manipuleren, moet het CREATE USER
privilege worden verleend in plaats van APPLICATION_PASSWORD_ADMIN
.
wanneer de read_only
systeemvariabele is ingeschakeld, vereist SET PASSWORD
de CONNECTION_ADMIN
privilege (of de verouderde SUPER
privilege), naast alle andere vereiste privileges.
voor meer informatie over het instellen van wachtwoorden en authenticatie plugins, zie paragraaf 6.2.,14, “Het toewijzen van Account wachtwoorden”, en paragraaf 6.2.17,”Pluggable Authentication”.
13.7.1.10 SET PASSWORD Statement
de SET PASSWORD
statement wijst een wachtwoord toe aan een MySQL-gebruikersaccount. Het wachtwoord kan expliciet worden gespecificeerd in de statement of willekeurig gegenereerd door MySQL. De verklaring kan ook een password-verification clausule bevatten die het huidige wachtwoord van de account specificeert dat moet worden vervangen, en een clausule die beheert of een account een secundair wachtwoord heeft., '
en auth_string
''
vertegenwoordigen elk een leesbaar (niet-versleuteld) wachtwoord.current_auth_string
'
in plaats van SET PASSWORD
te gebruiken om wachtwoorden toe te wijzen, is ALTER USER
de voorkeursverklaring voor accountwijzigingen, inclusief het toewijzen van wachtwoorden., Bijvoorbeeld:
ALTER USER user IDENTIFIED BY 'auth_string';
clausules voor willekeurige wachtwoordgeneratie, wachtwoordverificatie en secundaire wachtwoorden zijn alleen van toepassing op accounts die een authenticatieplugin gebruiken die referenties intern opslaat in MySQL. Voor accounts die een plugin gebruiken die authenticatie uitvoert tegen een aanmeldingssysteem dat extern is aan MySQL, moet wachtwoordbeheer ook extern worden afgehandeld tegen dat systeem. Zie paragraaf 6.2.15, “wachtwoordbeheer”voor meer informatie over het opslaan van interne referenties.,
deREPLACE '
clausule voert wachtwoordverificatie uit en is beschikbaar vanaf MySQL 8.0.13. Indien gegeven:current_auth_string
'
-
REPLACE
specificeert het huidige wachtwoord dat moet worden vervangen, als een niet-versleutelde tekenreeks. -
de clausule moet worden opgegeven als wachtwoordwijzigingen voor het account vereist zijn om het huidige wachtwoord te specificeren, als verificatie dat de gebruiker die de wijziging probeert aan te brengen het huidige wachtwoord daadwerkelijk kent.,
-
de clausule is optioneel als wachtwoordwijzigingen voor het account mogelijk zijn, maar niet het huidige wachtwoord hoeven te specificeren.
-
het statement mislukt als de clausule wordt gegeven, maar komt niet overeen met het huidige wachtwoord, zelfs als de clausule optioneel is.
-
REPLACE
kan alleen worden opgegeven bij het wijzigen van het accountwachtwoord voor de huidige gebruiker.
voor meer informatie over wachtwoordverificatie door het huidige wachtwoord op te geven, zie paragraaf 6.2.15, “Wachtwoordbeheer”.,
de RETAIN CURRENT PASSWORD
clausule implementeert dual-password mogelijkheid en is beschikbaar vanaf MySQL 8.0.14. Indien gegeven:
-
RETAIN CURRENT PASSWORD
behoudt het huidige wachtwoord van de rekening als secundaire wachtwoord, ter vervanging van een bestaand secundair wachtwoord. Het nieuwe wachtwoord wordt het primaire wachtwoord, maar clients kunnen het account gebruiken om verbinding te maken met de server met behulp van het primaire of secundaire wachtwoord., (Uitzondering: als het nieuwe wachtwoord opgegeven door de instructieSET PASSWORD
leeg is, wordt het secundaire wachtwoord ook leeg, zelfs alsRETAIN CURRENT PASSWORD
wordt gegeven.) -
Als u
RETAIN CURRENT PASSWORD
opgeeft voor een account met een leeg primair wachtwoord, mislukt het statement. -
als een account een secundair wachtwoord heeft en u het primaire wachtwoord wijzigt zonder
RETAIN CURRENT PASSWORD
op te geven, blijft het secundaire wachtwoord ongewijzigd.
voor meer informatie over het gebruik van dubbele wachtwoorden, zie paragraaf 6.2.,15, “Password Management”.
SET PASSWORD
staat deze toe auth_option
syntaxes:
-
= '
auth_string
'wijst het opgegeven letterlijke wachtwoord toe.
-
TO RANDOM
wijst het account een willekeurig door MySQL gegenereerd wachtwoord toe. Het statement retourneert ook het leesbare wachtwoord in een resultaatset om het beschikbaar te maken voor de gebruiker of toepassing die het statement uitvoert.,
voor details over de resultaatset en kenmerken van Willekeurig gegenereerde wachtwoorden, zie willekeurige Wachtwoordgeneratie.
willekeurige wachtwoordgeneratie is beschikbaar vanaf MySQL 8.0.18.
onder sommige omstandigheden kan SET PASSWORD
worden opgenomen in serverlogboeken of aan de clientzijde in een geschiedenisbestand zoals ~/.mysql_history
, wat betekent dat leesbare wachtwoorden kunnen worden gelezen door iedereen die leestoegang heeft tot die informatie., Zie paragraaf 6.1.2.3, “wachtwoorden en Logging”voor informatie over de omstandigheden waaronder dit gebeurt voor de serverlogboeken en hoe deze te beheren. Voor soortgelijke informatie over logging aan de clientzijde, zie paragraaf 4.5.1.3 ,” MySQL Client Logging”.,p> SET PASSWORD
kan worden gebruikt met of zonder een FOR
clausule die expliciet de namen van een gebruiker account:
-
Met een
FOR
component, de verklaring stelt het wachtwoord in voor de account met de naam, die moet bestaan:user
SET PASSWORD FOR 'jeffrey'@'localhost' = 'auth_string';
-
geen
FOR
component, de verklaring stelt het wachtwoord in voor de huidige gebruiker:user
SET PASSWORD = 'auth_string';
Elke client die verbinding maakt met de server met behulp van een nonanonymous account kunt het wachtwoord voor dat account., (In het bijzonder kunt u uw eigen wachtwoord wijzigen.) Om te zien met welk account de server u heeft geauthenticeerd, roept u de
CURRENT_USER()
functie:SELECT CURRENT_USER();
als eenFOR
clausule wordt gegeven, gebruikt de accountnaam het formaat beschreven in Paragraaf 6.2.4, “accountnamen specificeren”. Bijvoorbeeld: user
SET PASSWORD FOR 'bob'@'%.example.org' = 'auth_string';
het hostnaam deel van de accountnaam, indien weggelaten, is standaard '%'
.,
SET PASSWORD
interpreteert de tekenreeks als een tekenreeks zonder tekst, geeft deze door aan de authenticatie-plugin die aan het account is gekoppeld, en slaat het resultaat op dat door de plugin wordt geretourneerd in de account-rij in de mysql.user
systeemtabel. (De plugin krijgt de mogelijkheid om hash de waarde in de encryptie formaat verwacht. De plugin mag de opgegeven waarde gebruiken, in welk geval geen hashing plaatsvindt.,)
Het instellen van het wachtwoord voor een benoemde account (met een FOR
clausule) vereist het UPDATE
privilege voor het mysql
systeemschema. Het instellen van het wachtwoord voor uzelf (voor een niet-gelijknamige account zonder FOR
clausule) vereist geen speciale privileges.,
Statements die secundaire wachtwoorden wijzigen vereisen deze privileges:
-
de
APPLICATION_PASSWORD_ADMIN
privilege is vereist om deRETAIN CURRENT PASSWORD
clausule te gebruiken voorSET PASSWORD
statements die van toepassing zijn op uw eigen account. Het privilege is vereist om uw eigen secundaire wachtwoord te manipuleren omdat de meeste gebruikers slechts één wachtwoord nodig hebben., -
als een account secundaire wachtwoorden voor alle accounts mag manipuleren, moet het
CREATE USER
privilege worden verleend in plaats vanAPPLICATION_PASSWORD_ADMIN
.
wanneer de read_only
systeemvariabele is ingeschakeld, vereist SET PASSWORD
de CONNECTION_ADMIN
privilege (of de verouderde SUPER
privilege), naast alle andere vereiste privileges.
voor meer informatie over het instellen van wachtwoorden en authenticatie plugins, zie paragraaf 6.2.,14, “Het toewijzen van Account wachtwoorden”, en paragraaf 6.2.17,”Pluggable Authentication”.