sql >> Database teknologi >  >> RDS >> Mysql

Nulstil root-adgangskoden til MySQL

Denne vejledning indeholder trin til at nulstille eller ændre root-adgangskoden til MySQL-serveren, hvis brugeren har glemt adgangskoden. Det forudsætter, at du har adgang til systemet for at stoppe og starte MySQL-serveren. Denne vejledning er specifik for MySQL 8.0 og derover, selvom det burde fungere ud af boksen for ældre versioner af MySQL inklusive MySQL 5.7 . Vi kan nulstille root-adgangskoden på to måder som nævnt nedenfor.

Noter :Du kan også følge MySQL tutorials - Sådan installeres MySQL 8 på Ubuntu, Sådan fjerner du MySQL fuldstændigt fra Ubuntu, og lær grundlæggende SQL-forespørgsler ved hjælp af MySQL.

Opdater adgangskode

Vi kan simpelthen opdatere root-adgangskoden til MySQL, hvis vi allerede kender den. Det kan gøres ved hjælp af kommandoerne som vist nedenfor. ALTER kommandoen er den foretrukne, da den virker på MySQL 5.7 og MySQL 8 , selvom du kan følge enhver af kommandoerne.

# Log ind på MySQL
mysql -uroot -p
# ELLER
mysql -u root -p

# MySQL - 5.7.5 og tidligere
OPDATERING mysql.user SET password=PASSWORD('password') WHERE user='root';

# MySQL - 5.7.6 og nyere
OPDATERING mysql.user SET authentication_string=PASSWORD ("adgangskode") hvor bruger='root';
# ELLER
INDSTIL ADGANGSKODE FOR 'root'@'localhost' =ADGANGSKODE("adgangskode");

# MySQL - 5.7, 8
ÆNDRE BRUGER 'root'@'localhost' IDENTIFICERET AF '';
# ELLER
ÆNDRE BRUGER 'root'@'localhost' IDENTIFICERET MED mysql_native_password AF '';

# MySQL - 8
ALTER USER 'root'@'localhost' IDENTIFICERET MED caching_sha2_password AF '';

# Flush
SKYL PRIVILEGIER;

# Afbryd
afslut;

Hvis du har glemt din root-adgangskode, kan du følge enten Proces A eller Proces B som nævnt nedenfor.

Proces A - Sikker

I denne proces vil vi stoppe og starte MySQL-serveren for at bruge init-scriptet til at ændre root-adgangskoden.

Trin 1 - Stop serveren

Vi er nødt til at stoppe serveren som det første trin i denne proces. Det kan gøres ved hjælp af kommandoerne som vist nedenfor.

# Using init
sudo /etc/init.d/mysqld stop
# ELLER
sudo /etc/init.d/mysql stop

# Using service
sudo service mysql stop

# Using systemd
sudo systemctl stop mysqld.service
# ELLER
sudo systemctl stop mysql

Trin 2 - Opret Init-filen

Opret nu init-filen og tilføj kommandoen for at opdatere root-adgangskoden som vist nedenfor.

# Opret Init-fil - Brug din foretrukne editor
sudo nano init-file.txt

# Tilføj forespørgslen for at opdatere adgangskoden

# MySQL - 5.7, 8
ÆNDRE BRUGER 'root'@'localhost' IDENTIFICERET AF '';
# ELLER
ÆNDRE BRUGER 'root'@'localhost' IDENTIFICERET MED mysql_native_password AF '';

# MySQL - 8
ÆNDR BRUGER 'root'@'localhost' IDENTIFICERET MED caching_sha2_password AF '';

Trin 3 - Start MySQL Server

Start nu MySQL-serveren ved at bruge init-filen som vist nedenfor.

# Start serveren
sudo mysqld --init-file=init-file.txt &
# ELLER
sudo mysqld_safe --init-file=init-fil.txt &

Det kan give en masse fejl afhængigt af din serverinstallation.

Du får muligvis fejlmeddelelsen - mysqld_safe Directory '/var/run/ mysqld ' for UNIX-socket-fil ikke findes . Vi skal oprette mysqld mappe og lav mysql som ejer ved hjælp af kommandoerne som vist nedenfor.

# Stop serveren

# Lav mappe
sudo mkdir -p /var/run/mysqld

# Skift ejer
sudo chown mysql :mysql /var/run/mysqld

# Start med init-fil
sudo mysqld_safe --init-file=init-fil.txt &

Du får muligvis fejlmeddelelsen - FEJL 2002 (HY000):Kan ikke oprette forbindelse til lokal MySQL-server via socket '/var/run/mysqld /mysqld .sock' . I et sådant tilfælde skal du følge nedenstående kommandoer for at løse det.

# Start MySQL Server normalt - Ubuntu
sudo service mysql start

# Naviger til sock directory
cd /var/run

# Take backup - sock
sudo cp -rp ./mysqld ./mysqld.bak

# Stop serveren normalt - Ubuntu
sudo service mysql stop

# Gendan sokken
sudo mv ./mysqld.bak ./mysqld

# Start MySQL i usikker tilstand
sudo mysqld_safe --skip-grant-tables &

Trin 4 - Stop og start MySQL-serveren

Stop nu og start MySQL-serveren ved at bruge de almindelige kommandoer som vist nedenfor.

# Using init
sudo /etc/init.d/mysqld stop
sudo /etc/init.d/mysqld start
# ELLER
sudo /etc/init. d/mysql stop
sudo /etc/init.d/mysql start

# Bruger service
sudo service mysql stop
sudo service mysql start

# Using systemd
sudo systemctl stop mysqld.service
sudo systemctl start mysqld.service
# ELLER
sudo systemctl stop mysql
sudo systemctl start mysql

Afslut de eksisterende processer, hvis det er nødvendigt. Brug kun hvis ovenstående kommandoer ikke virker til at stoppe og starte serveren.

# Find processerne
ps aux | grep mysqld
ps aux | grep mysql

# Dræb processerne
sudo killall mysqld
sudo killall mysql

Trin 5 - Test adgangskode

Til sidst skal du teste den nye adgangskode ved hjælp af kommandoen som vist nedenfor.

# Test ny adgangskode
mysql -u root -p

Sørg for at slette init-filen efter at have testet din nye adgangskode. Hvis det ikke lykkes, kan du følge Proces B .

Proces B - Mindre sikker

I denne proces vil vi stoppe og derefter starte MySQL-serveren uden at kræve nogen adgangskode for at logge ind.

Trin 1 - Stop serveren

Vi er nødt til at stoppe den aktuelt kørende MySQL-server som det første trin for at fuldføre denne proces. Det kan gøres ved hjælp af kommandoerne som vist nedenfor.

# Using init
sudo /etc/init.d/mysqld stop
# ELLER
sudo /etc/init.d/mysql stop

# Using service
sudo service mysql stop

# Using systemd
sudo systemctl stop mysqld.service
# ELLER
sudo systemctl stop mysql

Trin 2 - Start MySQL uden adgangskode

Start nu MySQL-serveren med adgangskode deaktiveret ved hjælp af kommandoen som vist nedenfor. Sørg for at tilføje ampersand (&) i slutningen af ​​denne kommando. Det aktiverer også --skip-netværk automatisk for at forhindre fjernforbindelser.

# Start uden adgangskode
sudo mysqld_safe --skip-grant-tables &

Du får muligvis fejlen med en meddelelse - mysqld_safe Directory '/var/run/ mysqld ' for UNIX-socket-fil ikke findes . Vi er nødt til at oprette mysqld mappe og lav mysql som ejer ved hjælp af kommandoerne som vist nedenfor.

# Stop serveren

# Lav mappe
sudo mkdir -p /var/run/mysqld

# Skift ejer
sudo chown mysql :mysql /var/run/mysqld

# Start uden adgangskode
sudo mysqld_safe --skip-grant-tables &

Du får muligvis fejlmeddelelsen - FEJL 2002 (HY000):Kan ikke oprette forbindelse til lokal MySQL-server via socket '/var/run/mysqld /mysqld .sock' . I sådanne tilfælde , følg nedenstående kommandoer til Ubuntu for at løse det.

# Start MySQL Server
sudo service mysql start

# Naviger til sock directory
cd /var/run

# Tack backup - sock
sudo cp -rp ./mysqld ./mysqld.bak

# Stop serveren
sudo service mysql stop

# Gendan sokken
sudo mv ./mysqld.bak ./mysqld

# Start MySQL i usikker tilstand
sudo mysqld_safe --skip-grant-tables &

Trin 3 - Opret forbindelse til MySQL

Åbn nu en anden terminal eller opret forbindelse til serveren via en anden shell for at forbinde klienten.

# Tilslut direkte
mysql

# Tilslut som rod
mysql -uroot
# ELLER
mysql -u rod

Trin 4 - Skift adgangskode

I dette trin skal du ændre root-adgangskoden ved hjælp af kommandoerne som vist nedenfor. Du kan også henvise til afsnittet Opdater adgangskode i denne øvelse for at bruge andre kommandoer til at ændre adgangskoden.

# Skift adgangskode

# MySQL - 5.7, 8
ÆNDR BRUGER 'root'@'localhost' IDENTIFICERET AF '';
# ELLER
ÆNDRE BRUGER 'root'@'localhost' IDENTIFICERET MED mysql_native_password AF '';

# MySQL - 8
ALTER USER 'root'@'localhost' IDENTIFICERET MED caching_sha2_password AF ' ';

# Skyl
STYL PRIVILEGIER;

# Afbryd
afslut;

Trin 5 - Stop og start MySQL-serveren

Stop nu og start MySQL-serveren ved at bruge de almindelige kommandoer som vist nedenfor.

# Using init
sudo /etc/init.d/mysqld stop
sudo /etc/init.d/mysqld start
# ELLER
sudo /etc/init. d/mysql stop
sudo /etc/init.d/mysql start

# Bruger service
sudo service mysql stop
sudo service mysql start

# Using systemd
sudo systemctl stop mysqld.service
sudo systemctl start mysqld.service
# ELLER
sudo systemctl stop mysql
sudo systemctl start mysql

Afslut de eksisterende processer, hvis det er nødvendigt. Brug kun hvis ovenstående kommandoer ikke virker til at stoppe og starte serveren.

# Find processerne
ps aux | grep mysqld
ps aux | grep mysql

# Dræb processerne
sudo killall mysqld
sudo killall mysql

Trin 6 - Test adgangskode

Til sidst skal du teste den nye adgangskode ved hjælp af kommandoen som vist nedenfor.

# Test ny adgangskode
mysql -u root -p

Oversigt

Sådan kan vi nulstille eller ændre adgangskoden for root-brugeren eller enhver anden bruger, hvis vi har glemt adgangskoden.


  1. Hvordan kan jeg gøre noget som:BRUG @databaseName

  2. Sådan ændres standarddatabasens mailprofil for en bruger i SQL Server (T-SQL)

  3. Sådan fungerer BIT_LENGTH() i MariaDB

  4. Skal jeg indeksere primærnøglekolonne(r) i Oracle