sql >> Database >  >> RDS >> Mysql

Reset root-wachtwoord van MySQL

Deze tutorial biedt stappen om het root-wachtwoord van de MySQL-server opnieuw in te stellen of te wijzigen in het geval dat de gebruiker het wachtwoord is vergeten. Het gaat ervan uit dat u toegang hebt tot het systeem om de MySQL-server te stoppen en te starten. Deze tutorial is specifiek voor MySQL 8.0 en hoger, hoewel het standaard zou moeten werken voor oudere versies van MySQL, inclusief MySQL 5.7 . We kunnen het root-wachtwoord op twee manieren resetten, zoals hieronder vermeld.

Opmerkingen :U kunt ook de MySQL-zelfstudies volgen - MySQL 8 op Ubuntu installeren, MySQL volledig van Ubuntu verwijderen en basis-SQL-query's leren met MySQL.

Wachtwoord bijwerken

We kunnen eenvoudig het root-wachtwoord van MySQL bijwerken voor het geval we het al weten. Het kan worden gedaan met behulp van de onderstaande opdrachten. De ALTER commando heeft de voorkeur omdat het werkt op MySQL 5.7 en MySQL 8 , hoewel je elk van de commando's kunt volgen.

# Login to MySQL
mysql -uroot -p
# OR
mysql -u root -p

# MySQL - 5.7.5 and earlier
UPDATE mysql.user SET password=PASSWORD('password') WHERE user='root';

# MySQL - 5.7.6 and newer
UPDATE mysql.user SET authentication_string=PASSWORD("password") where user='root';
# OR
SET PASSWORD FOR 'root'@'localhost' = PASSWORD("password");

# MySQL - 5.7, 8
ALTER USER 'root'@'localhost' IDENTIFIED BY '<password>';
# OR
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<password>';

# MySQL - 8
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '<password>';

# Flush
FLUSH PRIVILEGES;

# Disconnect
quit;

Als u uw root-wachtwoord bent vergeten, kunt u ofwel Proces A . volgen of Proces B zoals hieronder vermeld.

Proces A - Beveiligd

In dit proces zullen we de MySQL-server stoppen en starten om het init-script te gebruiken om het root-wachtwoord te wijzigen.

Stap 1 - Stop de server

We moeten de server stoppen als de eerste stap van dit proces. Het kan worden gedaan met behulp van de onderstaande commando's.

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

# Using service
sudo service mysql stop

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

Stap 2 - Maak het init-bestand

Maak nu het init-bestand en voeg de opdracht toe om het root-wachtwoord bij te werken, zoals hieronder weergegeven.

# Create Init File - Use your preferred editor
sudo nano <path to init file>init-file.txt

# Add the query to update password

# MySQL - 5.7, 8
ALTER USER 'root'@'localhost' IDENTIFIED BY '<password>';
# OR
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<password>';

# MySQL - 8
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '<password>';

Stap 3 - MySQL Server starten

Start nu de MySQL-server met behulp van het init-bestand zoals hieronder weergegeven.

# Start the server
sudo mysqld --init-file=<path to init file>init-file.txt &
# OR
sudo mysqld_safe --init-file=<path to init file>init-file.txt &

Het kan een heleboel fouten veroorzaken, afhankelijk van je serverinstallatie.

Mogelijk krijgt u de foutmelding - mysqld_safe Directory '/var/run/ mysqld ' voor UNIX-socketbestand niet bestaat . We moeten de mysqld maken directory en maak mysql als de eigenaar met behulp van de onderstaande commando's.

# Stop the server

# Make directory
sudo mkdir -p /var/run/mysqld

# Change owner
sudo chown mysql:mysql /var/run/mysqld

# Start with init file
sudo mysqld_safe --init-file=<path to init file>init-file.txt &

Mogelijk krijgt u de foutmelding - ERROR 2002 (HY000):Can't connect to local MySQL server through socket '/var/run/mysqld /mysqld .sok' . Volg in dat geval de onderstaande commando's om het op te lossen.

# Start MySQL Server normally - Ubuntu
sudo service mysql start

# Navigate to sock directory
cd /var/run

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

# Stop the server normally - Ubuntu
sudo service mysql stop

# Restore the sock
sudo mv ./mysqld.bak ./mysqld

# Start MySQL in unsafe mode
sudo mysqld_safe --skip-grant-tables &

Stap 4 - Stop en start de MySQL-server

Stop nu en start de MySQL-server met behulp van de reguliere opdrachten zoals hieronder weergegeven.

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

# Using service
sudo service mysql stop
sudo service mysql start

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

Beëindig de bestaande processen indien nodig. Alleen gebruiken als de bovenstaande opdrachten niet werken om de server te stoppen en te starten.

# Find the processes
ps aux | grep mysqld
ps aux | grep mysql

# Kill the processes
sudo killall mysqld
sudo killall mysql

Stap 5 - Wachtwoord testen

Test ten slotte het nieuwe wachtwoord met behulp van de onderstaande opdracht.

# Test new password
mysql -u root -p

Zorg ervoor dat u het init-bestand verwijdert nadat u uw nieuwe wachtwoord hebt getest. Mocht het niet lukken, volg dan het Proces B .

Proces B - Minder veilig

In dit proces stoppen we en starten we de MySQL-server zonder dat er een wachtwoord nodig is om in te loggen.

Stap 1 - Stop de server

We moeten de momenteel draaiende MySQL-server stoppen als eerste stap om dit proces te voltooien. Het kan worden gedaan met behulp van de onderstaande commando's.

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

# Using service
sudo service mysql stop

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

Stap 2 - Start MySQL zonder wachtwoord

Start nu de MySQL-server met het wachtwoord uitgeschakeld met behulp van de onderstaande opdracht. Zorg ervoor dat u ampersand toevoegt (&) aan het einde van deze opdracht. Het maakt ook --skip-networking . mogelijk automatisch om externe verbindingen te voorkomen.

# Start without password
sudo mysqld_safe --skip-grant-tables &

Mogelijk krijgt u de foutmelding - mysqld_safe Directory '/var/run/ mysqld ' voor UNIX-socketbestand niet bestaat . We moeten de mysqld maken directory en maak mysql als de eigenaar met behulp van de onderstaande commando's.

# Stop the server

# Make directory
sudo mkdir -p /var/run/mysqld

# Change owner
sudo chown mysql:mysql /var/run/mysqld

# Start without password
sudo mysqld_safe --skip-grant-tables &

Mogelijk krijgt u de foutmelding - ERROR 2002 (HY000):Can't connect to local MySQL server through socket '/var/run/mysqld /mysqld .sok' . In dergelijke case , volg de onderstaande opdrachten voor Ubuntu om het op te lossen.

# Start MySQL Server
sudo service mysql start

# Navigate to sock directory
cd /var/run

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

# Stop the server
sudo service mysql stop

# Restore the sock
sudo mv ./mysqld.bak ./mysqld

# Start MySQL in unsafe mode
sudo mysqld_safe --skip-grant-tables &

Stap 3 - Maak verbinding met MySQL

Open nu een andere terminal of maak via een andere shell verbinding met de server om de client te verbinden.

# Connect Directly
mysql

# Connect as Root
mysql -uroot
# OR
mysql -u root

Stap 4 - Wachtwoord wijzigen

Wijzig in deze stap het root-wachtwoord met behulp van de onderstaande opdrachten. U kunt ook de sectie Wachtwoord bijwerken . raadplegen van deze tutorial om andere commando's te gebruiken om het wachtwoord te wijzigen.

# Change Password

# MySQL - 5.7, 8
ALTER USER 'root'@'localhost' IDENTIFIED BY '<password>';
# OR
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<password>';

# MySQL - 8
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '<password>';

# Flush
FLUSH PRIVILEGES;

# Disconnect
quit;

Stap 5 - Stop en start de MySQL-server

Stop nu en start de MySQL-server met behulp van de reguliere opdrachten zoals hieronder weergegeven.

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

# Using service
sudo service mysql stop
sudo service mysql start

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

Beëindig de bestaande processen indien nodig. Alleen gebruiken als de bovenstaande opdrachten niet werken om de server te stoppen en te starten.

# Find the processes
ps aux | grep mysqld
ps aux | grep mysql

# Kill the processes
sudo killall mysqld
sudo killall mysql

Stap 6 - Wachtwoord testen

Test ten slotte het nieuwe wachtwoord met behulp van de onderstaande opdracht.

# Test new password
mysql -u root -p

Samenvatting

Dit is hoe we het wachtwoord van root-gebruiker of een andere gebruiker kunnen resetten of wijzigen voor het geval we het wachtwoord zijn vergeten.


  1. MariaDB numerieke functies (volledige lijst)

  2. SQL Server Failover Cluster Installatie -4

  3. Hoe krijg ik alleen cijfers van String in mysql?

  4. Opgeslagen procedure om de status van indexen in alle databases te krijgen