MySQL – смяна на root парола

Помощен център

MySQL – смяна на root парола

Тази статия описва как да смените root паролата на MySQL в случай, че сте я забравили или сте загубили файла с паролите.

Неотменимо условие в случая е, че трябва да имате root достъп до сървъра, за да смените root паролата на MySQL.

За да смените паролата на root потребителя, изпълнете внимателно описаните стъпки.

Логнете се в сървъра с данните на потребител с пълни права и изпълнете командите в следващите стъпки като root потребител.

Вие може да се логнете директно като root потребител (което не се препоръчва поради съображения за сигурност) или да използвате командите su или sudo, за да изпълните командите като root потребител.

Спрете MySQL сървъра, като използвате съответната команда за вашата Linux дистрибуция:

Потребителите с Ubuntu / Debian трябва да въведат:

sudo service mysql stop

Потребителите с CentOS и Fedora трябва да въведат:

sudo service mysqld stop

Уверете се, че няма активен mysql процес с командата ps auxf | grep mysql:

VirtualBox:~$ ps auxf | grep mysql
ladmin   13950  0.0  0.2   7136  2204 pts/5    S+   22:32   0:00          |       \_ grep --color=auto mysql

Рестартирайте MySQL сървъра с опцията --skip-grant-tables. За целта въведете следната команда:

sudo mysqld --skip-grant-tables &

Уверете се, че сте въвели символа (&) в края на командата. Това изпълнява командата във фонов режим и ви позволява да въведете команди в следващите стъпки.

Стартирането на MySQL с активираната опция --skip-grant-tables е крайно несигурно и трябва да се използва само за кратък период от време, докато смените паролата.

Следващите стъпки показват как да спрете безопасно mysqld инстанцията на сървъра и да стартирате MySQL сървъра сигурно, след като сте въвели новата root парола.

Влезте в MySQL, като използвате следната команда:

mysql

Въведете в промпта mysql> следната команда, замествайки NEW-PASSWORD с новата root парола:

UPDATE mysql.user SET Password=PASSWORD('NEW-PASSWORD') WHERE User='root';

Отново в промпта mysql> изпълнете последователно следните команди:

FLUSH PRIVILEGES;

exit;

Ако проверите процесите с командата ps auxf | grep mysql ще се уверите, че инстанцията mysqld --skip-grant-tables е активна:

VirtualBox:~$ ps auxf | grep mysql
root     19550  0.0  0.3   9204  4052 pts/1    S    00:51   0:00                  \_ sudo mysqld --skip-grant-tables
mysql    19551  0.5  3.5 326572 36436 pts/1    Sl   00:51   0:00                  |   \_ mysqld --skip-grant-tables
ladmin   19575  0.0  0.2   7136  2244 pts/1    S+   00:53   0:00                  \_ grep --color=auto mysql

В никакъв случай не стартирайте MySQL сървъра преди да спрете mysqld --skip-grant-tables - погледнете малко по-горе как се логнахте само с командата mysql без да въвеждате нито потребител, нито парола!

Спрете mysqld --skip-grant-tables като използвате следната команда:

mysqladmin -u root -p shutdown

Ще бъдете подканени да въведете новата MySQL root парола, преди MySQL сървърът да изпълни командата:

VirtualBox:~$ mysqladmin -u root -p shutdown
Enter password: 
ladmin@ladmin-VirtualBox:~$ ps auxf | grep mysql
ladmin   19580  3.0  0.2   7136  2240 pts/1    S+   00:54   0:00                  \_ grep --color=auto mysql

Сега вече може да стартирате сървъра нормално като въведете подходящата команда за вашата Linux дистрибуция:

За потребители с Ubuntu и Debian:

sudo service mysql start

За потребители с CentOS и Fedora:

sudo service mysqld start