Glemt root-passordet til MariaDB på VPS?
Denne veiledningen gjelder Uniweb VPS med Ubuntu, der MariaDB er installert direkte på serveren og administreres med systemctl.
Du må ha SSH-tilgang til serveren og en bruker med root- eller sudo-rettigheter.
Veiledningen gjelder ikke nødvendigvis dersom databasen kjører i Docker, via et kontrollpanel som Plesk/cPanel, på webhotell eller på en administrert løsning.
Før du starter
Denne artikkelen gjelder root-brukeren i MariaDB. Root-brukeren har full tilgang til databaseserveren.
Dersom du har glemt passordet til en vanlig databasebruker, trenger du normalt ikke å tilbakestille root-passordet. Da kan du logge inn som administrator og endre passordet til den aktuelle databasebrukeren.
Vær oppmerksom på at deler av denne veiledningen krever at MariaDB stoppes og startes på nytt. Nettsider, applikasjoner og tjenester som bruker databasen kan derfor bli utilgjengelige mens arbeidet pågår.
Planlegg endringen til et tidspunkt med lav trafikk, og informer eventuelle andre brukere på forhånd.
Prøv dette først
På mange Ubuntu-baserte MariaDB-oppsett kan systemets root-bruker logge inn i MariaDB uten eget databasepassord.
Prøv derfor først:
sudo mariadbDersom du kommer inn i MariaDB-konsollen, trenger du ikke nødvendigvis å tilbakestille root-passordet. Du kan administrere databasen direkte derfra.
Dersom du bare ønsker å sette eller endre passord for root-brukeren, kan du prøve denne kommandoen inne i MariaDB-konsollen:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('sikkert_passord');Bytt ut sikkert_passord med et sterkt og unikt passord.
Avslutt deretter MariaDB-konsollen:
EXIT;For applikasjoner og nettsider bør du normalt bruke egne databasebrukere, ikke MariaDB-brukeren root.
Dersom sudo mariadb ikke fungerer, eller du ikke får satt nytt passord, kan du følge stegene nedenfor.
Sjekk MariaDB-versjonen
Kjør:
mariadb --versionPå enkelte systemer fungerer også denne kommandoen:
mysql --versionSelv om kommandoen heter mysql, kan output fortsatt vise at serveren bruker MariaDB.
Stopp MariaDB
Stopp MariaDB-tjenesten:
sudo systemctl stop mariadbStart MariaDB uten passordkontroll
For å kunne sette et nytt passord må MariaDB startes midlertidig uten de vanlige rettighetstabellene. Disse tabellene inneholder blant annet brukere, passord og tilganger.
Denne modusen skal kun brukes midlertidig. Mens den er aktiv, kan lokale brukere på serveren få tilgang uten passord. Derfor starter vi samtidig MariaDB uten nettverkstilgang.
Opprett en midlertidig konfigurasjonsfil:
sudo tee /etc/mysql/mariadb.conf.d/99-reset-root.cnf >/dev/null <<'EOF'
[mariadb]
skip-grant-tables
skip-networking
EOFStart MariaDB igjen:
sudo systemctl start mariadbLogg inn uten passord:
sudo mariadb -u rootNår du er inne i MariaDB-konsollen, kjør:
FLUSH PRIVILEGES;Dette laster inn rettighetssystemet igjen, slik at du kan endre brukerkontoer.
Sett nytt root-passord
Kjør:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('sikkert_passord');Bytt ut sikkert_passord med et sterkt og unikt passord.
På enkelte oppsett kan root-brukeren være satt opp med kun socket-basert innlogging. Dersom kommandoen over ikke fungerer, og du bevisst ønsker å endre root-brukeren til passordbasert innlogging, kan du bruke denne varianten:
ALTER USER 'root'@'localhost'
IDENTIFIED VIA mysql_native_password USING PASSWORD('sikkert_passord');Vær oppmerksom på at dette endrer hvordan root-brukeren autentiseres. Dersom sudo mariadb allerede fungerer, er det ofte bedre å beholde socket-basert innlogging og heller bruke egne databasebrukere til nettsider og applikasjoner.
Avslutt MariaDB-konsollen:
EXIT;Start MariaDB normalt igjen
Fjern den midlertidige konfigurasjonsfilen:
sudo rm /etc/mysql/mariadb.conf.d/99-reset-root.cnfStart MariaDB på nytt:
sudo systemctl restart mariadbKontroller at tjenesten kjører:
sudo systemctl status mariadbTest det nye passordet
Test passordbasert innlogging uten sudo:
mariadb -u root -pSkriv inn det nye passordet når du blir bedt om det.
Merk at sudo mariadb fortsatt kan fungere uten passord dersom root-brukeren bruker socket-basert innlogging. For å teste selve passordet bør du derfor bruke kommandoen uten sudo.
Endre passord for en vanlig databasebruker
Dersom du ikke har glemt root-passordet, men passordet til en vanlig databasebruker, kan du endre dette etter at du har logget inn som administrator:
ALTER USER 'brukernavn'@'localhost' IDENTIFIED BY 'nytt_passord';Bytt ut brukernavn og nytt_passord med riktig brukernavn og nytt passord.
Dersom brukeren ikke er knyttet til localhost, må du bruke riktig host-verdi for brukeren. Dette kan for eksempel være % eller et bestemt vertsnavn.
Oppsummering
Dersom du har glemt root-passordet til MariaDB på en Uniweb VPS, kan du som regel sette et nytt passord så lenge du har SSH-tilgang og root- eller sudo-rettigheter på serveren.
På Ubuntu-baserte MariaDB-oppsett er det vanlig at root-brukeren kan logge inn via systemets root-bruker uten eget databasepassord. Derfor bør du alltid teste sudo mariadb først.
Trenger du hjelp, kan du kontakte Uniweb kundeservice.