Jak zmienić hasło MariaDB dla użytkowników root i zwykłych
Zapomniałeś hasła root MariaDB? Bez niego nie będziesz mógł zarządzać użytkownikami, bazami danych ani wykonywać kluczowych konfiguracji. W tym artykule dowiesz się, jak szybko zresetować hasło użytkownika root w MariaDB, a także jak zresetować hasło dla zwykłych użytkowników.
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 MariaDB.
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
W dalszej części większość poleceń będzie używać mysql
, a nie mariadb
, do komunikacji z serwerem MariaDB. Dzieje się tak, ponieważ w niektórych systemach operacyjnych, takich jak dystrybucje oparte na RHEL (RockyLinux, AlmaLinux itp.), polecenie mariadb
może być niedostępne. Zamiast niego używa się mysql aby zachować kompatybilność z MySQL.
Korzystanie z polecenia mysql gwarantuje uniwersalność instrukcji, niezależnie od używanej dystrybucji lub implementacji serwera bazy danych.
Krok 1: Zatrzymaj MariaDB
Aby zresetować hasło, najpierw należy zatrzymać serwer MariaDB. Wpisz odpowiednią komendę:
systemctl stop mariadb
Krok 2: Uruchom serwer w trybie bezpiecznym
- Dla Debian i Ubuntu:
Upewnij się, że katalog używany przez MariaDB istnieje i ma konkretnego właściciela:
mkdir -p /var/run/mysqld/ && chown -R mysql: /var/run/mysqld/
Uruchom serwer MariaDB bez sprawdzania uprawnień:
mysqld_safe --skip-grant-tables --socket=/var/run/mysqld/mysqld.sock &
Jeśli serwer MariaDB uruchomi się poprawnie, zobaczysz podobny komunikat:
2024-11-28T23:50:19.298141Z mysqld_safe Starting mariadb daemon with databases from /var/lib/mysql
Aby wrócić do wiersza poleceń, użyj kombinacji klawiszy „Ctrl + c”.
- Dla CentOS/RockyLinux/AlmaLinux:
Uruchom serwer MariaDB bez sprawdzania uprawnień:
mysqld_safe --skip-grant-tables --socket=/var/lib/mysql/mysql.sock &
Aby wrócić do wiersza poleceń, użyj kombinacji klawiszy „Ctrl + c”.
Krok 3: Połącz się z MariaDB
- Dla Debian 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 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.
'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 MariaDB za pomocą polecenia exit lub skrótu „Ctrl + d”.
Krok 5: Uruchom ponownie MariaDB
Zatrzymaj serwer MariaDB:
- Dla Debian i Ubuntu:
mysqladmin shutdown --socket=/var/run/mysqld/mysqld.sock -p
Następnie podaj wcześniej ustawione hasło roota.
- Dla CentOS/RockyLinux/AlmaLinux:
mysqladmin shutdown --socket=/var/lib/mysql/mysql.sock -p
Następnie podaj wcześniej ustawione hasło roota.
Uruchom MariaDB w normalnym trybie:
systemctl start mariadb
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:
- Połącz się z serwerem MariaDB jako root:
mysql -u root -p
Wprowadź swoje hasło root MariaDB.
- Wykonaj polecenie, aby zmienić hasło:
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 MariaDB 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 MariaDB lokalnie bez podawania hasła
Aby uniknąć ręcznego wpisywania hasła przy każdym połączeniu z MariaDB, 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