Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Zresetuj hasło roota MySQL

Ten samouczek zawiera kroki, aby zresetować lub zmienić hasło roota serwera MySQL na wypadek, gdyby użytkownik zapomniał hasła. Zakłada, że ​​masz dostęp do systemu, aby zatrzymać i uruchomić serwer MySQL. Ten samouczek dotyczy tylko MySQL 8.0 i wyżej, chociaż powinno działać po wyjęciu z pudełka dla starszych wersji MySQL, w tym MySQL 5.7 . Możemy zresetować hasło roota na dwa sposoby, jak wspomniano poniżej.

Notatki :Możesz również skorzystać z samouczków MySQL - Jak zainstalować MySQL 8 na Ubuntu, Jak całkowicie usunąć MySQL z Ubuntu i Naucz się podstawowych zapytań SQL przy użyciu MySQL.

Aktualizuj hasło

Możemy po prostu zaktualizować hasło roota MySQL, jeśli już je znamy. Można to zrobić za pomocą poleceń, jak pokazano poniżej. ALTER Polecenie jest preferowane, ponieważ działa na MySQL 5.7 i MySQL 8 , ale możesz wykonać dowolne polecenie.

# 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;

Jeśli zapomniałeś hasła roota, możesz wykonać Proces A lub Proces B jak wspomniano poniżej.

Proces A — Bezpieczny

W tym procesie zatrzymamy i uruchomimy serwer MySQL, aby użyć skryptu startowego do zmiany hasła roota.

Krok 1 — Zatrzymaj serwer

Musimy zatrzymać serwer jako pierwszy krok tego procesu. Można to zrobić za pomocą poleceń, jak pokazano poniżej.

# 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

Krok 2 — Utwórz plik początkowy

Teraz utwórz plik init i dodaj polecenie aktualizacji hasła roota, jak pokazano poniżej.

# 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>';

Krok 3 — Uruchom serwer MySQL

Teraz uruchom serwer MySQL za pomocą pliku init, jak pokazano poniżej.

# 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 &

W zależności od instalacji serwera może to spowodować wiele błędów.

Może pojawić się błąd z komunikatem – mysqld_safe Directory '/var/run/ mysqld ' dla pliku gniazda UNIX nie istnieje . Musimy utworzyć mysqld katalogu i utwórz mysql jako właściciel za pomocą poleceń, jak pokazano poniżej.

# 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 &

Możesz otrzymać błąd z komunikatem - BŁĄD 2002 (HY000):Nie można połączyć się z lokalnym serwerem MySQL przez gniazdo '/var/run/mysqld /mysqld .skarpetka . W takim przypadku postępuj zgodnie z poniższymi poleceniami, aby rozwiązać ten problem.

# 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 &

Krok 4 — Zatrzymaj i uruchom serwer MySQL

Teraz zatrzymaj i uruchom serwer MySQL, używając zwykłych poleceń, jak pokazano poniżej.

# 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

W razie potrzeby przerwij istniejące procesy. Używaj tylko wtedy, gdy powyższe polecenia nie działają, aby zatrzymać i uruchomić serwer.

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

# Kill the processes
sudo killall mysqld
sudo killall mysql

Krok 5 — Testuj hasło

Na koniec przetestuj nowe hasło za pomocą polecenia, jak pokazano poniżej.

# Test new password
mysql -u root -p

Pamiętaj, aby usunąć plik init po przetestowaniu nowego hasła. Jeśli to nie zadziała, możesz postępować zgodnie z Procesem B .

Proces B — mniej bezpieczny

W tym procesie zatrzymamy, a następnie uruchomimy serwer MySQL bez konieczności podawania hasła do logowania.

Krok 1 — Zatrzymaj serwer

Aby zakończyć ten proces, musimy zatrzymać aktualnie działający serwer MySQL. Można to zrobić za pomocą poleceń, jak pokazano poniżej.

# 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

Krok 2 — Uruchom MySQL bez hasła

Teraz uruchom serwer MySQL z wyłączonym hasłem za pomocą polecenia, jak pokazano poniżej. Pamiętaj, aby dodać ampersand (&) na końcu tego polecenia. Umożliwia także --pominięcie sieci automatycznie, aby zapobiec zdalnym połączeniom.

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

Może pojawić się błąd z komunikatem – mysqld_safe Directory '/var/run/ mysqld ' dla pliku gniazda UNIX nie istnieje . Musimy utworzyć mysqld katalogu i utwórz mysql jako właściciel za pomocą poleceń, jak pokazano poniżej.

# 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 &

Możesz otrzymać błąd z komunikatem - BŁĄD 2002 (HY000):Nie można połączyć się z lokalnym serwerem MySQL przez gniazdo '/var/run/mysqld /mysqld .skarpetka . W takim przypadek , postępuj zgodnie z poniższymi poleceniami dla Ubuntu, aby go rozwiązać.

# 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 &

Krok 3 — Połącz się z MySQL

Teraz otwórz inny terminal lub połącz się z serwerem przez inną powłokę, aby połączyć klienta.

# Connect Directly
mysql

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

Krok 4 — Zmień hasło

W tym kroku zmień hasło roota za pomocą poleceń, jak pokazano poniżej. Możesz również zapoznać się z sekcją Aktualizuj hasło tego samouczka, aby użyć innych poleceń do zmiany hasła.

# 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;

Krok 5 — Zatrzymaj i uruchom serwer MySQL

Teraz zatrzymaj i uruchom serwer MySQL, używając zwykłych poleceń, jak pokazano poniżej.

# 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

W razie potrzeby przerwij istniejące procesy. Używaj tylko wtedy, gdy powyższe polecenia nie działają, aby zatrzymać i uruchomić serwer.

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

# Kill the processes
sudo killall mysqld
sudo killall mysql

Krok 6 — Testuj hasło

Na koniec przetestuj nowe hasło za pomocą polecenia, jak pokazano poniżej.

# Test new password
mysql -u root -p

Podsumowanie

W ten sposób możemy zresetować lub zmienić hasło użytkownika root lub dowolnego innego użytkownika w przypadku, gdy zapomnieliśmy hasła.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak pokazać procesy MySQL

  2. Co to jest LENGTH() w MySQL?

  3. Jak usunąć wiodące i końcowe spacje w MySQL?

  4. INDIE, STD Code Finder Script w PHP, MYSQL, JQUERY

  5. Najlepsze praktyki mysqldump:Część 2 – Przewodnik po migracji