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.
- Hvordan installere MySQL 8 i CentOS, RHEL og Fedora
- 15 Nyttige MySQL ytelsesjustering og optimaliseringstips
- 12 MySQL-sikkerhetspraksis for Linux
- 4 nyttige kommandolinjeverktøy for å overvåke MySQL-ytelse
- 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.