MySQL – zmiana hasła root’a

W celu zmiany hasła root’a do bazy danych MySQL z linii komend linux’a wydajemy poniższe polecenie:

root@server: mysqladmin -u root -p'starehasło' password nowehasło

wpisując odpowiednio zamiast „starehasło” obecne hasło root’a, a zamiast „nowehasło” hasło, które ma obowiązywać.

Jeżeli nigdy nie ustawialiście hasła dla użytkownika root do bazy danych MySQL i możecie się do niej zalogować bez podawania hasła lokalnie i zdalnie, poniższym poleceniem ustawicie hasło do serwera MySQL:

root@server: mysqladmin -u root password nowehasło

gdzie zamiast „nowehasło” wpisujecie hasło jakie ma być ustawione dla root’a.

W podobny sposób można zmienić hasło dla dowolnego użytkownika serwera MySQL:

root@server: mysqladmin -u adam -p'starehasło' password nowehasło

gdzie zamiast „adam” wpisujecie nazwę użytkownika serwera MySQL, zamiast „starehasło” – obecne hasło użytkownika adam, a zamiast „nowehasło” – hasło jakie ma być ustawione dla podanego użytkownika.

Inną metodą zmiany hasła użytkowników dostępną również z poziomu PHP, jest zalogowanie się do bazy MySQL i zmiana danych przechowywanych w tabeli z hasłami według poniższego wzoru:

root@server: mysql -u root -p

po podaniu hasła i zalogowaniu do MySQL wpisujemy:

mysql> use mysql;

dalej zmieniamy hasło dla użytkownika adam:

mysql> UPDATE `user` SET `password`=PASSWORD("nowehasło") WHERE `User`='adam';

na koniec trzeba przeładować uprawnienia:

mysql> FLUSH PRIVILEGES;
mysql> exit;

Jeśli macie problem z hasłem root’a do bazy danych, w innym artykule opisałem resetowanie hasła root’a.

MySQL resetowanie hasła root’a

Poniżej procedura resetowania hasła root’a do baz ydanych MySQL, któa może być stosowana na platformach Windows i Linux.

1. W pierwszej kolejności należy zatrzymać serwer MySQL:

root@server: service mysql stop

2. Uruchamiamy server mysql z poniższymi opcjami:

root@server: mysqld --skip-grant-tables --skip-networking &

W związku z tym, iż powyższe polecenie daje możliwość połączenia do serwera każdemu bez hasła, ze względów bezpieczeństwa uruchamiamy serwer bez sieci, dzięki czemu połączenie do niego jest możliwe tylko lokalnie.

3. Następnie łączymy się z serwerem:

root@server: mysql -u root

4. Z linii komend mysql wykonujemy poniższe polecenie:

mysql> FLUSH PRIVILEGES;

5. Następnie ustawiamy lub uaktualniamy hasło root’a wpisując zamiast „nowehaslo” swoje hasło do serwera MySQL:

mysql> UPDATE mysql.user SET Password=PASSWORD('nowehaslo') WHERE User='root';
Jeżeli resetujemy hasło dla root’a, który może się logować tylko lokalnie wpisujemy poniższe polecenie zamiast wcześniejszego:
mysql> UPDATE mysql.user SET Password=PASSWORD('nowehaslo') WHERE Host='localhost' AND User='root';
6. Przed uruchomieniem serwera musimy jeszcze załadować do pamięci tabelę uprawnień:
mysql> FLUSH PRIVILEGES;

7. Na zakończenie zatrzymujemy serwer i uruchamiamy do bez dodatkowych opcji poniższymi poleceniami:

root@server: /etc/init.d/mysql stop
root@server: service mysql start
Po tych zabiegach będziemy mogli zalogować się do serwera mysql za pomocą nowego hasła:
root@server: mysql -u root -p