Przejdź do głównej zawartości

Jak zmienić hasło MySQL dla użytkownika root i zwykłych użytkowników

· 3 min aby przeczytać
Customer Care Engineer

Zapomniałeś hasła administratora MySQL? Nie martw się, zdarza się to nawet doświadczonym administratorom. W tym artykule wyjaśnimy, jak zresetować hasło administratora MySQL dla różnych wersji: MySQL 5.7 i MySQL 8.0+. Dodatkowo omówimy, jak zresetować hasło zwykłego użytkownika bazy danych.

W przypadku MariaDB zapoznaj się z naszym osobnym przewodnikiem.

informacja

Root to główny administrator bazy danych. Posiada pełny dostęp do wszystkich danych i ustawień. Jeśli zapomnisz tego hasła, modyfikowanie niektórych ustawień i wykonywanie niektórych poleceń nie będzie już możliwe.

Wszystkie operacje będą wykonywane za pośrednictwem wiersza poleceń przez SSH. Więcej szczegółowych instrukcji dotyczących połączenia z serwerem za pomocą tego protokołu znajdziesz w tym artykule.

Przed przystąpieniem do pracy sprawdź zawartość pliku /root/.my.cnf. Często zawiera on bieżące hasło administratora do dostępu do MySQL.

Możesz przetestować połączenie za pomocą polecenia:

mysql -u root -p 

Następnie wprowadź hasło z pliku .my.cnf.

Jeśli hasło nie działa, postępuj zgodnie z poniższymi instrukcjami.


Jak zresetować hasło administratora MySQL

Krok 1: Zatrzymaj MySQL

Aby zresetować hasło, najpierw musisz zatrzymać MySQL. Wprowadź następujące polecenie:

  • Dla Debian i Ubuntu:
systemctl stop mysql
  • Dla CentOS/RockyLinux/AlmaLinux:
systemctl stop mysqld

Krok 2: Uruchom serwer w trybie awaryjnym

  • Dla Debian i Ubuntu:

Upewnij się, że katalog, z którego MySQL będzie uruchamiany, istnieje i ma odpowiedniego właściciela:

mkdir -p /var/run/mysqld/ && chown -R mysql: /var/run/mysqld/

Uruchom serwer MySQL bez kontroli dostępu:

mysqld_safe --skip-grant-tables --socket=/var/run/mysqld/mysqld.sock &

Jeśli MySQL uruchomi się poprawnie, zobaczysz komunikat podobny do:

2024-11-28T23:50:19.298141Z mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql

Aby kontynuować pracę w wierszu poleceń, naciśnij „Ctrl + C”.

  • Dla CentOS/RockyLinux/AlmaLinux:
sudo -u mysql mysqld --skip-grant-tables --socket=/var/run/mysqld/mysqld.sock &

Krok 3: Połącz się z MySQL

mysql --socket=/var/run/mysqld/mysqld.sock

Krok 4: Zresetuj hasło

  • Dla MySQL 5.7 wykonaj sekwencyjnie następujące polecenia:
FLUSH PRIVILEGES;

Dla użytkownika lokalnego:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword';

Dla użytkownika sieciowego (jeśli istnieje):

ALTER USER 'root'@'%' IDENTIFIED BY 'NewPassword';

Następnie:

FLUSH PRIVILEGES;

Zastąp NewPassword nowym, żądanym hasłem.

informacja

'user'@'localhost' odnosi się do użytkownika lokalnego łączącego się przez socket lub localhost. 'user'@'%' odnosi się do użytkownika sieciowego z dostępem z dowolnego adresu IP.

Możesz ustawić te same lub różne hasła dla tych użytkowników. Jeśli użytkownik sieciowy nie istnieje, polecenie @'%' zakończy się błędem.

Wyjdź z MySQL, wpisując komendę exit lub naciskając „Ctrl + D”.

  • Dla MySQL 8.0+ wykonaj następujące polecenia:
FLUSH PRIVILEGES;

Dla użytkownika lokalnego:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'NewPassword';

Dla użytkownika sieciowego (jeśli istnieje):

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'NewPassword';

Następnie:

FLUSH PRIVILEGES;

Zastąp NewPassword nowym, żądanym hasłem.

Wyjdź z MySQL, wpisując komendę exit lub naciskając „Ctrl + D”.

Krok 5: Uruchom ponownie MySQL

Zatrzymaj MySQL:

mysqladmin shutdown --socket=/var/run/mysqld/mysqld.sock -p

Następnie wprowadź wcześniej ustawione hasło administratora.

Uruchom MySQL w normalnym trybie:

  • Dla Debian i Ubuntu:
systemctl start mysql
  • Dla CentOS/RockyLinux/AlmaLinux:
systemctl start mysqld

Jak zresetować hasło dla zwykłych użytkowników

Jeśli zapomniałeś hasła dla użytkownika innego niż root, podejście jest podobne:

  1. Połącz się z serwerem MySQL jako root:
mysql -u root -p

Wprowadź swoje hasło administratora MySQL.

  1. Wykonaj polecenie, aby zmienić hasło:
  • MySQL 5.7:

Dla użytkownika lokalnego:

ALTER USER 'username'@'localhost' IDENTIFIED BY 'NewUserPassword';

Dla użytkownika sieciowego (jeśli istnieje):

ALTER USER 'username'@'%' IDENTIFIED BY 'NewUserPassword';

Następnie:

FLUSH PRIVILEGES;

Zastąp username istniejącą nazwą użytkownika i NewUserPassword nowym, żądanym hasłem.

Wyjdź z MySQL, wpisując komendę exit lub naciskając „Ctrl + D”.

  • MySQL 8.0+:

Dla użytkownika lokalnego:

ALTER USER 'username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'NewPassword';

Dla użytkownika sieciowego (jeśli istnieje):

ALTER USER 'username'@'%' IDENTIFIED WITH mysql_native_password BY 'NewPassword';

Zastąp username istniejącą nazwą użytkownika i NewUserPassword nowym, żądanym hasłem.

Następnie wyjdź z MySQL, wpisując komendę exit lub naciskając kombinację klawiszy „Ctrl + D”.

Jeśli to konieczne, możesz wyświetlić listę wszystkich użytkowników za pomocą następującego zapytania:

SELECT User, Host FROM mysql.user;

Jak połączyć się z MySQL lokalnie bez podawania hasła

Aby uniknąć ręcznego wprowadzania hasła za każdym razem, gdy łączysz się z MySQL z wiersza poleceń na swoim serwerze, możesz zapisać je w pliku /root/.my.cnf. Otwórz plik w edytorze tekstu:

nano /root/.my.cnf

Dodaj następujące wiersze:

[client]

user = root
password = YourRootPassword

Zastąp YourRootPassword swoim faktycznym hasłem administratora.

Następnie zapisz plik, naciskając kombinację klawiszy „Ctrl + O”, i zamknij edytor tekstu, naciskając „Ctrl + X”.

Ze względów bezpieczeństwa ustaw bardziej rygorystyczne uprawnienia dla pliku .my.cnf:

chmod 600 /root/.my.cnf

Po tej konfiguracji możesz połączyć się, uruchamiając po prostu polecenie:

mysql -u root