I en olycklig händelse av att glömma eller förlora ditt MySQL root-lösenord, kommer du säkert att behöva ett sätt att återställa det på något sätt. Vad vi behöver veta är att lösenordet lagras i användartabellen. Det betyder att vi måste hitta ett sätt att kringgå MySQL-autentiseringen, så att vi kan uppdatera lösenordsposten.
Lyckligtvis finns det ett enkelt att uppnå och den här handledningen guidar dig genom processen att återställa eller återställa root-lösenordet i MySQL 8.0-versionen.
Enligt MySQL-dokumentationen finns det två sätt att återställa root MySQL-lösenordet. Vi kommer att granska båda.
Återställ MySQL-rootlösenordet med –init-fil
Ett av sätten att återställa root-lösenordet är att skapa en lokal fil och sedan starta MySQL-tjänsten med --init-file
alternativ som visas.
# vim /home/user/init-file.txt
Det är viktigt att du ser till att filen är läsbar för mysql-användaren. Klistra in följande i filen:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
I ovanstående ändra "nytt_lösenord ” med lösenordet som du vill använda.
Se nu till att MySQL-tjänsten är stoppad. Du kan göra följande:
# systemctl stop mysqld.service # for distros using systemd # /etc/init.d/mysqld stop # for distros using init
Kör sedan följande:
# mysqld --user=mysql --init-file=/home/user/init-file.txt --console
Detta kommer att starta MySQL-tjänsten och under processen kommer den att köra init-filen som du har skapat och därmed kommer lösenordet för rootanvändaren att uppdateras. Se till att ta bort filen när lösenordet har återställts.
Se till att stoppa servern och starta den normalt efter 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 bör nu kunna ansluta till MySQL-servern som root med det nya lösenordet.
# mysql -u root -p
Återställ MySQL-rootlösenordet med –skip-grant-tables
Det andra alternativet vi har är att starta MySQL-tjänsten med --skip-grant-tables
alternativ. Detta är mindre säkert eftersom när tjänsten startas på det sättet kan alla användare ansluta utan lösenord.
Om servern startas --skip-grant-tables
, alternativet för --skip-networking
aktiveras automatiskt så att fjärranslutningar inte är tillgängliga.
Se först till att MySQL-tjänsten är stoppad.
# systemctl stop mysqld.service # for distros using systemd # /etc/init.d/mysqld stop # for distros using init
Starta sedan tjänsten med följande alternativ.
# mysqld --skip-grant-tables --user=mysql &
Sedan kan du ansluta till mysql-servern genom att helt enkelt köra.
# mysql
Eftersom kontohantering är inaktiverat när tjänsten startas med --skip-grant-tables
alternativ måste vi ladda om bidragen. På så sätt kommer vi att kunna ändra lösenordet senare:
# FLUSH PRIVILEGES;
Nu kan du köra följande fråga för att uppdatera lösenordet. Se till att ändra "new_password" med det faktiska lösenord du vill använda.
# ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_passowrd';
Stoppa nu MySQL-servern och starta 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 kunna ansluta med ditt nya lösenord.
# mysql -u root -p
Du kanske också vill läsa dessa användbara efter MySQL-relaterade artiklar.
- Hur man installerar MySQL 8 i CentOS, RHEL och Fedora
- 15 användbara tips för MySQL-prestandajustering och optimering
- 12 MySQL-säkerhetsmetoder för Linux
- 4 användbara kommandoradsverktyg för att övervaka MySQL-prestanda
- Startkommandon för MySQL-databasadministration
Slutsats
I den här artikeln lärde du dig hur du återställer förlorat root-lösenord för MySQL 8.0-servern. Jag hoppas att processen var enkel.