Jak zmienić hasło root w MySQL w systemie Linux?

Ten artykuł dotyczy zmiany hasła dla użytkownika root oraz innych użytkowników w bazie MySQL.
Artykuł jest uniwersalny i dotyczy większości systemów operacyjnych (Windows: Windows XP, Windows 7, Windows 98, …; Linux: Debian, Ubuntu, Mandriva, Knoppix, PLD, …).

MySQL to najpopularniejsza baza danych w ostatnich czasach. Dlatego niezmiernie ważną rzeczą jest ustawienie hasła dla użytkowników systemowych tej bazy danych. Najważniejszym użytkownikiem jest oczywiście root – to konto głównego administratora bazy.
Bezpośrednio po instalacji serwera MySQL, hasło użytkownika root jest puste.
Oznacza to, że dosłownie każdy kto ma ochotę, może zalogować się na to konto. A jakie mogą być tego konsekwencje, każdy może sobie wyobrazić.

Dlatego hasło dla root’a powinno zostać ustanowione od razu po instalacji serwera MySQL.

Jak ustanowić hasło dla root’a i innych użytkowników bazy MySQL

Aby ustawić hasło root’a, po uruchomieniu serwera MySQL, powinniśmy wpisać w konsoli następujące polecenie:
$ mysqladmin -u root password HASLO_DO_MYSQL_DLA_ROOT

Ustanownienie hasła dla każdego innego użytkownika odbywa się w taki sam sposób czyli:
$ mysqladmin -u USER_NAME password HASLO_DO_MYSQL_DLA_USER_NAME

Pamiętajmy aby przeładować uprawnienia:
$ mysqladmin -u root -p flush-privileges

Należy pamiętać, iż powyższą konstrukację (mysqladmin -u USER password PASSWORD) używamy tylko i wyłącznie aby ustanowić hasło! Czyli tylko wtedy gdy użytkownik posiada hasło puste.
Przy próbie “zmiany” hasła dostaniemy komunikat:

mysqladmin : connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)'

Jak zmienić hasło dla root i innych użytkowników bazy MySQL

Aby zmienić hasło dla naszego super użytkownika (root) w bazie MySQL wydajemy polecenie w konsoli
$ mysqladmin -u root -p password NOWE_HASLO_DO_MYSQL
Enter password: (system prosi nas o potwierdzenie) – potwierdzamy wpisując stare hasło dla użytkownika

Dla normalnego użytkownika użytkownika polecenie wygląda tak samo (zastępujemy root na nazwę użytkownika).
$ mysqladmin -u user -p password NOWE_HASLO_DO_MYSQL

Przeładowujemy uprawnienia:
$ mysqladmin -u root -p flush-privileges

Zmiana hasła dla root bezpośrednio w bazie.
Poniżej przedstawię inny przykład zmiany hasła dla root oraz innych użytkowników bazy MySQL.
Poniższe czynności możemy wykonać na kilka sposobów:
- logując się z konsoli do bazy MySQL
- logując się do bazy za pośrednictwem phpMyAdmina
- generując odpowiedni kod php i wykonując odpowiednie zapytania SQL do bazy

1. Za pomocą konsoli logujemy się do serwera MySQL
$ mysql -u root -p

2. Przełączamy się na bazę danych MySQL
mysql> use mysql;

3. Wykonujemy update (zmieniamy hasło dla użytkownika root)
mysql> UPDATE User SET password=PASSWORD(‘nowe_haslo_dla_root’) WHERE User=’root’;
Query OK, 4 rows affected (0.00 sec)
Rows matched: 4 Changed: 4 Warnings: 0
Jak widać hasło zostało zmienione w 4 rekordach (liczba rekordów u Ciebie może być inna)

4. Aktualizujemy informacje o uprawnieniach (przeładowujemy uprawnienia do bazy)
mysql> flush privileges;

5. Opuszczamy bazę MySQL
mysql> quit;

I co?
Wystarczyła chwila i mamy porządnie zabezpieczoną bazę danych, a przynajmniej dostanie się do niej wymaga podania hasła.
Bo jak wiadomo jeżeli ktoś ma fizyczny dostęp do serwera MySQL to nawet hasło root’a nie uchroni naszych danych przed nieuprawnionym dostępem.
Ale o tym w innym artykule na temat bezpieczeństwa naszych danych w bazie MySQL.

This entry was posted in Bezpieczeństwo, Linux, MySQL and tagged , , , , , , , . Bookmark the permalink.

Leave a Reply