Przejdź do głównej zawartości

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

· 3 min aby przeczytać
Customer Care Engineer

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

informacja

Root to główny administrator bazy danych. Posiada pełny dostęp do wszystkich baz, tabel, użytkowników i ustawień. Utrata tego hasła może uniemożliwić zarządzanie bazą danych, w tym wprowadzanie kluczowych zmian i wykonywanie ważnych poleceń. 

Wszystkie operacje będą wykonywane w wierszu poleceń za pośrednictwem SSH. Więcej informacji na temat łączenia się z serwerem za pomocą tego protokołu można znaleźć w tym artykule

Zanim przejdziesz do resetowania hasła, sprawdź plik: /root/.my.cnf Często znajduje się w nim aktualne hasło root do MySQL

Połączenie można sprawdzić za pomocą polecenia:

mysql -u root -p 

Następnie należy podać hasło z pliku .my.cnf

Jeśli to hasło nie działa, skorzystaj z instrukcji poniżej. 


Resetowanie hasła

Krok 1: Zatrzymaj MySQL

Aby zresetować hasło, najpierw zatrzymaj serwer MySQL. Wpisz odpowiednią komendę:

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

Krok 2: Uruchom serwer w trybie bezpiecznym

  • Dla Debian i Ubuntu:

Upewnij się, że katalog używany przez MySQL istnieje i ma konkretnego właściciela:

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

Następnie uruchom MySQL bez sprawdzania uprawnień:

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

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

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

Aby wrócić do wiersza poleceń, użyj kombinacji klawiszy „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

W MySQL 5.7 wykonaj kolejno następujące polecenia:

FLUSH PRIVILEGES;

Dla użytkownika lokalnego:

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

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

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

Następnie:

FLUSH PRIVILEGES;

Zastąp NewPassword swoim nowym hasłem.

informacja

'user'@'localhost' — użytkownik lokalny, który łączy się przez socket lub localhost. 'user'@'%' — użytkownik sieciowy, który może łączyć się z dowolnego adresu IP.

Hasła dla tych użytkowników mogą być takie same lub różne. Jeśli użytkownik sieciowy nie istnieje, polecenie dla @'%’ wywoła błąd.

Następnie wyjdź z MySQL za pomocą polecenia exit lub skrótu „Ctrl + D”. 

  • W MySQL 8.0+ uruchom kolejno 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 taki istnieje):

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

Następnie:

FLUSH PRIVILEGES;

Zastąp NewPassword swoim nowym hasłem.

Następnie wyjdź z MySQL za pomocą polecenia exit lub skrótu „Ctrl + D”. 

Krok 5: Uruchom ponownie MySQL

Zatrzymaj MySQL:

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

Następnie podaj wcześniej ustawione hasło roota. 

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 użytkownika innego niż root, postępuj według poniższych instrukcji:

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

Wprowadź swoje hasło root 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 taki istnieje):

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

Następnie:

FLUSH PRIVILEGES;

Zastąp username nazwą użytkownika, a NewUserPassword nowym hasłem.

Następnie wyjdź z MySQL za pomocą polecenia exit lub skrótu „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 taki istnieje):

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

Zastąp username nazwą użytkownika, a NewUserPassword nowym hasłem.

Następnie wyjdź z MySQL za pomocą polecenia exit lub skrótu „Ctrl + D”. 

W razie potrzeby można 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 nie wprowadzać hasła za każdym razem ręcznie podczas łączenia się z MySQL z wiersza poleceń na swoim serwerze, możesz dodać je do pliku /root/.my.cnf

Otwórz plik w edytorze tekstowym:

nano /root/.my.cnf

I dodaj następujące linie:

[client]

user = root
password = YourRootPassword

Zamiast YourRootPassword należy podać prawidłowe hasło użytkownika root.

Następnie zapisz plik za pomocą skrótu klawiaturowego „Ctrl + O” i zamknij edytor tekstu za pomocą „Ctrl + X”. 

Ze względów bezpieczeństwa ustaw bardziej restrykcyjne uprawnienia dostępu do pliku .my.cnf:

chmod 600 /root/.my.cnf

Po tym wystarczy użyć następującego polecenia, aby się połączyć:

mysql -u root