Slik tilbakestiller du root-passordet i MySQL 8.0


I en uheldig hendelse der du glemmer eller mister MySQL root-passordet ditt, vil du helt sikkert trenge en måte å gjenopprette det på en eller annen måte. Det vi trenger å vite er at passordet er lagret i brukertabellen. Dette betyr at vi må finne en måte å omgå MySQL-autentiseringen, slik at vi kan oppdatere passordposten.

Heldigvis er det en enkel å oppnå, og denne opplæringen vil guide deg gjennom prosessen med å gjenopprette eller tilbakestille root-passordet i MySQL 8.0-versjonen.

I henhold til MySQL-dokumentasjonen er det to måter å tilbakestille root MySQL-passordet på. Vi vil vurdere begge.

Tilbakestill MySQL Root-passord ved å bruke –init-file

En av måtene å tilbakestille root-passordet på er å lage en lokal fil og deretter starte MySQL-tjenesten ved å bruke --init-file-alternativet som vist.

vim /home/user/init-file.txt

Det er viktig at du sørger for at filen er lesbar av mysql-brukeren. Lim inn følgende i filen:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

I ovenstående endres «nytt_passord» med passordet du ønsker å bruke.

Sørg nå for at MySQL-tjenesten er stoppet. Du kan gjøre følgende:

systemctl stop mysqld.service     # for distros using systemd 
/etc/init.d/mysqld stop           # for distros using init

Kjør deretter følgende:

mysqld --user=mysql --init-file=/home/user/init-file.txt --console

Dette vil starte MySQL-tjenesten og under prosessen vil den kjøre init-filen som du har opprettet og dermed vil passordet for root-brukeren bli oppdatert. Sørg for å slette filen når passordet er tilbakestilt.

Sørg for å stoppe serveren og starte den normalt etter det.

systemctl stop mysqld.service        # for distros using systemd 
systemctl restart mysqld.service     # for distros using systemd 

/etc/init.d/mysqld stop              # for distros using init
/etc/init.d/mysqld restart           # for distros using init

Du skal nå kunne koble til MySQL-serveren som root ved å bruke det nye passordet.

mysql -u root -p

Tilbakestill MySQL Root-passord ved å bruke –skip-grant-tables

Det andre alternativet vi har er å starte MySQL-tjenesten med alternativet --skip-grant-tables. Dette er mindre sikkert, siden tjenesten startes på den måten, kan alle brukere koble seg til uten passord.

Hvis serveren startes --skip-grant-tables, aktiveres alternativet for --skip-nettverk automatisk slik at eksterne tilkoblinger ikke vil være tilgjengelige.

Sørg først for at MySQL-tjenesten er stoppet.

systemctl stop mysqld.service     # for distros using systemd 
/etc/init.d/mysqld stop           # for distros using init

Start deretter tjenesten med følgende alternativ.

mysqld --skip-grant-tables --user=mysql &

Deretter kan du koble til mysql-serveren ved å bare kjøre.

mysql

Siden kontoadministrasjon er deaktivert når tjenesten startes med --skip-grant-tables-alternativet, må vi laste inn bevilgningene på nytt. På den måten vil vi kunne endre passordet senere:

FLUSH PRIVILEGES;

Nå kan du kjøre følgende spørring for å oppdatere passordet. Sørg for å endre "new_password" med det faktiske passordet du ønsker å bruke.

ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_passowrd';

Stopp nå MySQL-serveren og start den normalt.

systemctl stop mysqld.service        # for distros using systemd 
systemctl restart mysqld.service     # for distros using systemd 

/etc/init.d/mysqld stop              # for distros using init
/etc/init.d/mysqld restart           # for distros using init

Du bør kunne koble til med det nye passordet ditt.

mysql -u root -p

Du vil kanskje også lese disse nyttige følgende MySQL-relaterte artiklene.

  1. Hvordan installere MySQL 8 i CentOS, RHEL og Fedora
  2. 15 Nyttige MySQL ytelsesjustering og optimaliseringstips
  3. 12 MySQL-sikkerhetspraksis for Linux
  4. 4 nyttige kommandolinjeverktøy for å overvåke MySQL-ytelse
  5. MySQL-databaseadministrasjonskommandoer
Konklusjon

I denne artikkelen lærte du hvordan du tilbakestiller tapt root-passord for MySQL 8.0-serveren. Jeg håper prosessen var enkel.