Jak zmienić hasło MariaDB dla użytkowników root i zwykłych
Zapomniałeś hasła MariaDB root? Bez niego nie będziesz w stanie zarządzać użytkownikami, bazami danych ani wykonywać krytycznych konfiguracji. W tym artykule dowiesz się nie tylko, jak szybko zresetować hasło root MariaDB, ale także, jak zresetować hasło dla zwykłych użytkowników.
Dla MySQL zapoznaj się z naszym osobnym przewodnikiem.
Użytkownik root jest głównym administratorem bazy danych. Ma pełny dostęp do wszystkich danych i ustawień. Jeśli zgubisz to hasło, nie będziesz w stanie zmienić niektórych ustawień ani wykonać poleceń.
Wszystkie operacje będą wykonywane przez linię poleceń przez SSH. Szczegółowe instrukcje dotyczące połączenia z serwerem przez SSH znajdziesz w tym artykułe.
Przed rozpoczęciem sprawdź zawartość pliku /root/.my.cnf. Często zawiera on aktualne hasło root do dostępu do MariaDB.
Aby przetestować połączenie, użyj 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
Resetowanie hasła
W większości poniższych poleceń, zamiast mariadb używane będzie polecenie mysql do interakcji z serwerem MariaDB. Dzieje się tak, ponieważ w niektórych systemach operacyjnych, takich jak dystrybucje oparte na RHEL (RockyLinux, AlmaLinux itp.), polecenie mariadb jest niedostępne. Zamiast tego, w celu zapewnienia kompatybilności z MySQL, używane jest polecenie mysql.
Użycie polecenia mysql zapewnia uniwersalną kompatybilność niezależnie od dystrybucji lub implementacji serwera.
Krok 1: Zatrzymaj MariaDB
Aby zresetować hasło, najpierw zatrzymaj serwer MariaDB. Wprowadź następujące polecenie:
systemctl stop mariadb
Krok 2: Uruchom ponownie serwer w trybie bezpiecznym
- Dla Debiana i Ubuntu:
Upewnij się, że katalog, z którego MariaDB będzie uruchomiony, istnieje i ma właściwego właściciela:
mkdir -p /var/run/mysqld/ && chown -R mysql: /var/run/mysqld/
Uruchom serwer MariaDB bez kontroli dostępu:
mysqld_safe --skip-grant-tables --socket=/var/run/mysqld/mysqld.sock &
Jeśli serwer MariaDB uruchomi się pomyślnie, zobaczysz komunikat podobny do:
2024-11-28T23:50:19.298141Z mysqld_safe Starting mariadb daemon with databases from /var/lib/mysql
Aby kontynuować pracę w linii poleceń, naciśnij „Ctrl + C”
- Dla CentOS/RockyLinux/AlmaLinux:
Uruchom serwer MariaDB bez kontroli dostępu:
mysqld_safe --skip-grant-tables --socket=/var/lib/mysql/mysql.sock &
Aby kontynuować pracę w linii poleceń, naciśnij „Ctrl + C”.
Krok 3: Połącz się z MariaDB
- Dla Debiana i Ubuntu:
mysql --socket=/var/run/mysqld/mysqld.sock
- Dla CentOS/RockyLinux/AlmaLinux:
mysql --socket=/var/lib/mysql/mysql.sock
Krok 4: Zresetuj hasło
Wykonaj następujące polecenia sekwencyjnie:
FLUSH PRIVILEGES;
Dla użytkownika lokalnego:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NoweHasło';
Dla użytkownika sieciowego (jeśli istnieje):
ALTER USER 'root'@'%' IDENTIFIED BY 'NoweHasło';
Następnie:
FLUSH PRIVILEGES;
Zastąp NoweHasło nowym, pożądanym hasłem.
'użytkownik'@'localhost' – odnosi się do użytkownika lokalnego łączącego się przez gniazdo lub localhost. 'użytkownik'@'%' odnosi się do użytkownika sieciowego z dostępem z dowolnego adresu IP.
Możesz ustawić takie same lub różne hasła dla tych użytkowników. Jeśli użytkownik sieciowy nie istnieje, polecenie @'%' spowoduje błąd.
Wyjdź z MariaDB, używając polecenia exit lub naciskając „Ctrl + D”
Krok 5: Uruchom ponownie MariaDB
Zatrzymaj serwer MariaDB:
- Dla Debiana i Ubuntu:
mysqladmin shutdown --socket=/var/run/mysqld/mysqld.sock -p
Następnie wprowadź wcześniej ustawione hasło root.
- Dla CentOS/RockyLinux/AlmaLinux:
mysqladmin shutdown --socket=/var/lib/mysql/mysql.sock -p
Następnie wprowadź wcześniej ustawione hasło root.
Uruchom MariaDB w normalnym trybie:
systemctl start mariadb
Jak zresetować hasło dla zwykłych użytkowników
Jeśli zapomnisz hasła użytkownika innego niż root, podejście jest podobne:
- Połącz się z serwerem MariaDB jako root:
mysql -u root -p
Wprowadź hasło root MariaDB.
- Wykonaj polecenie zmiany hasła:
Dla użytkownika lokalnego:
ALTER USER 'nazwa_uzytkownika'@'localhost' IDENTIFIED BY 'NoweHasloUzytkownika';
Dla użytkownika sieciowego (jeśli istnieje):
ALTER USER 'nazwa_uzytkownika'@'%' IDENTIFIED BY 'NoweHasloUzytkownika';
Następnie:
FLUSH PRIVILEGES;
Zastąp nazwa_uzytkownika rzeczywistą nazwą użytkownika i NoweHasloUzytkownika nowym, pożądanym hasłem.
Wyjdź z MariaDB, używając polecenia exit lub naciskając „Ctrl + D”.
W razie potrzeby 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 MariaDB lokalnie bez wprowadzania hasła
Aby uniknąć ręcznego wprowadzania hasła przy każdym połączeniu z MariaDB z linii poleceń na 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 = TwojeHasloRoot
Zastąp TwojeHasloRoot swoim rzeczywistym hasłem root.
Zapisz plik, naciskając Ctrl + O, a następnie zamknij edytor tekstu za pomocą Ctrl + X
Ze względów bezpieczeństwa ustaw bardziej restrykcyjne uprawnienia dla pliku .my.cnf:
chmod 600 /root/.my.cnf
Po tym możesz połączyć się, po prostu uruchamiając polecenie:
mysql -u root