Sök…


Introduktion

Efter MySQL 5.7 behöver vi ibland inte skapa ett root-konto eller ge ett root-lösenord när vi installerar MySQL. Som standard när vi startar servern lagras mysqld.log filen mysqld.log . Vi måste logga in på systemet med det lösenordet och vi måste ändra det.

Anmärkningar

Återställa och återställa standardrotlösenordet med den här metoden är endast tillämpligt för MySQL 5.7+

Vad händer när den första starten av servern

Med tanke på att serverns datakatalog är tom:

  • Servern initialiseras.
  • SSL-certifikat och nyckelfiler genereras i datakatalogen.
  • Validet_password plugin är installerat och aktiverat.
  • Superanvändarkontot 'root' @ 'localhost' skapas. Lösenordet för superanvändaren ställs in och sparas i felloggfilen.

Hur du ändrar root-lösenordet med standardlösenordet

För att avslöja standardlösenordet "root":

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

Ändra root-lösenordet så snart som möjligt genom att logga in med det genererade tillfälliga lösenordet och ange ett anpassat lösenord för superanvändarkontot:

shell> mysql -uroot -p 

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

Obs: MySQL: s validate_password-plugin installeras som standard. Detta kommer att kräva att lösenord innehåller minst en stor bokstav, en liten bokstav, en siffra och ett specialtecken och att den totala lösenordslängden är minst 8 tecken.

återställ root-lösenordet när "/ var / run / mysqld 'för UNIX-socket-fil inte finns"

om jag glömmer lösenordet får jag fel.

$ mysql -u root -p    

Skriv in lösenord:

ERROR 1045 (28000): Åtkomst nekad för användaren 'root' @ 'localhost' (med lösenord: YES)

Jag försökte lösa problemet genom att först känna statusen:

$ systemctl status mysql.service

mysql.service - MySQL Community Server Lastad: laddad (/lib/systemd/system/mysql.service; aktiverad; leverantörsinställning: sv Aktiv: aktiv (igång) sedan tors 2017-06-08 14:31:33 IST; 38s sedan

Sedan använde jag koden mysqld_safe --skip-grant-tables & men jag får felet:

mysqld_safe Directory '/ var / run / mysqld' för UNIX-socket-fil finns inte.

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

Jag löst:

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

Nu använder jag samma kod mysqld_safe --skip-grant-tables & och får

mysqld_safe Starta mysqld daemon med databaser från / var / lib / mysql

Om jag använder $ mysql -u root jag:

Serverversion: 5.7.18-0ubuntu0.16.04.1 (Ubuntu)

Copyright (c) 2000, 2017, Oracle och / eller dess dotterbolag. Alla rättigheter förbehållna.

Oracle är ett registrerat varumärke som tillhör Oracle Corporation och / eller dess dotterbolag. Andra namn kan vara varumärken som tillhör respektive ägare.

Skriv "hjälp;" eller '\ h' för hjälp. Skriv '\ c' för att rensa det aktuella inmatningsförklaringen.

mysql>

Nu är det dags att ändra lösenord:

mysql> use mysql
mysql> describe user;

Läsa tabellinformation för att fylla i tabell- och kolumnnamn Du kan stänga av den här funktionen för att få en snabbare start med -A

Databasen har ändrats

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

eller om du har ett mysql-root-konto som kan ansluta överallt ska du också göra:

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

Alternativ metod:

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

Och om du har ett root-konto som kan komma åt överallt:

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

nu måste quit från mysql och stoppa / starta

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

nu igen "mysql -u root -p" och använd det nya lösenordet för att få

mysql>



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow