Zoeken…


Invoering

Na MySQL 5.7 hoeven we bij het installeren van MySQL soms geen root-account aan te maken of een root-wachtwoord op te geven. Wanneer we de server starten, wordt het standaardwachtwoord standaard opgeslagen in het bestand mysqld.log . We moeten met dat wachtwoord inloggen op het systeem en dit moeten wijzigen.

Opmerkingen

Het herstellen en resetten van het standaard root-wachtwoord met behulp van deze methode is alleen van toepassing op MySQL 5.7+

Wat gebeurt er wanneer de server voor het eerst wordt opgestart

Aangezien de gegevensmap van de server leeg is:

  • De server is geïnitialiseerd.
  • SSL-certificaat en sleutelbestanden worden gegenereerd in de gegevensmap.
  • De plug-in validate_password is geïnstalleerd en ingeschakeld.
  • Het superuser-account 'root' @ 'localhost' is gemaakt. Het wachtwoord voor de superuser wordt ingesteld en opgeslagen in het foutenlogbestand.

Hoe het root-wachtwoord te wijzigen met behulp van het standaardwachtwoord

Om het standaard "root" wachtwoord te onthullen:

shell> sudo grep 'temporary password' /var/log/mysqld.log

Wijzig het root-wachtwoord zo snel mogelijk door in te loggen met het gegenereerde tijdelijke wachtwoord en stel een aangepast wachtwoord in voor het superuser-account:

shell> mysql -uroot -p 

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass5!'; 

Opmerking: de validate_password-plug-in van MySQL wordt standaard geïnstalleerd. Dit vereist dat wachtwoorden ten minste één hoofdletter, één kleine letter, één cijfer en één speciaal teken bevatten en dat de totale wachtwoordlengte ten minste 8 tekens is.

reset root-wachtwoord wanneer "/ var / run / mysqld 'voor UNIX-socketbestand niet bestaat"

als ik het wachtwoord vergeet, krijg ik een foutmelding.

$ mysql -u root -p    

Voer wachtwoord in:

FOUT 1045 (28000): Toegang geweigerd voor gebruiker 'root' @ 'localhost' (met wachtwoord: JA)

Ik probeerde het probleem op te lossen door eerst de status te kennen:

$ systemctl status mysql.service

mysql.service - MySQL Community Server geladen: geladen (/lib/systemd/system/mysql.service; ingeschakeld; leveranciervoorinstelling: nl Actief: actief (actief) sinds do 2017-06-08 14:31:33 IST; 38s geleden

Toen gebruikte ik de code mysqld_safe --skip-grant-tables & maar ik krijg de foutmelding:

mysqld_safe Directory '/ var / run / mysqld' voor UNIX-socketbestand bestaat niet.

$ systemctl stop  mysql.service
$ ps -eaf|grep mysql
$ mysqld_safe --skip-grant-tables &

Ik heb opgelost:

$ mkdir -p /var/run/mysqld
$ chown mysql:mysql /var/run/mysqld

Nu gebruik ik dezelfde code mysqld_safe --skip-grant-tables & en krijg

mysqld_safe mysqld daemon starten met databases van / var / lib / mysql

Als ik $ mysql -u root , krijg ik:

Serverversie: 5.7.18-0ubuntu0.16.04.1 (Ubuntu)

Copyright (c) 2000, 2017, Oracle en / of zijn dochterondernemingen. Alle rechten voorbehouden.

Oracle is een geregistreerd handelsmerk van Oracle Corporation en / of zijn dochterondernemingen. Andere namen kunnen handelsmerken zijn van hun respectieve eigenaars.

Typ 'help;' of '\ h' voor hulp. Typ '\ c' om de huidige invoerinstructie te wissen.

mysql>

Tijd om het wachtwoord te wijzigen:

mysql> use mysql
mysql> describe user;

Tabelinformatie lezen voor het voltooien van tabel- en kolomnamen U kunt deze functie uitschakelen om sneller op te starten met -A

Database gewijzigd

mysql> FLUSH PRIVILEGES;
mysql> SET PASSWORD FOR root@'localhost' = PASSWORD('newpwd');

of Als u een mysql-rootaccount hebt waarmee u overal verbinding kunt maken, moet u ook:

UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root';

Alternatieve methode:

   USE mysql
   UPDATE user SET Password = PASSWORD('newpwd')
   WHERE Host = 'localhost' AND User = 'root';

En als u een root-account hebt dat overal toegankelijk is:

 USE mysql
 UPDATE user SET Password = PASSWORD('newpwd')
 WHERE Host = '%' AND User = 'root';`enter code here

moet nu quit met mysql en stoppen / starten

FLUSH PRIVILEGES;
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start

nu opnieuw `mysql -u root -p 'en gebruik het nieuwe wachtwoord om te krijgen

mysql>



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow