MySQL:: MySQL 8.0 Reference Manual:: 13.7.1.10 SET PASSWORD Statement


13.7.1.10 SET PASSWORD Statement

de SET PASSWORDstatement 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”.

Share

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *