Mysql: Восстановление root пароля

Случается, что необходимо заменить пароль root в mysql или вы не помните старый. Для данного действа есть волшебный параметр – skip-grant-tables.

Как всегда есть два варианта его использования. Первый – запускаем с этим пареметром базу данных, второй – добавляем в my.cnf и база данных также запускается с этим параметром. Операции показываю на базе FreeBSD, но все это также можно пробелать на Linux или другой *nix системе (будут отличаться только пути/методы остановки сервиса и путь к файлу my.cnf).

первый:

# /usr/local/etc/rc.d/mysql-server stop
# mysqld_safe --skip-grant-tables &
# mysql -u root mysql
меняем пароль root в mysql
mysql> UPDATE USER SET password=password('NEWPASS') WHERE USER='root' AND `host`='localhost`;
mysql> FLUSH PRIVILEGES;
mysql> quit
перезапускам сервис
# killall -9 mysqld_safe
# /usr/local/etc/rc.d/mysql-server start

второй

# /usr/local/etc/rc.d/mysql-server stop
Правим my.cnf - добавляем в секцию  [mysqld]
skip-grant-tables
Рестартуем, коннектимся и меняем пароль
# /usr/local/etc/rc.d/mysql-server start
# mysql -u root mysql
mysql> UPDATE USER SET password=password('NEWPASS') WHERE USER='root' AND `host`='localhost`;
mysql> FLUSH PRIVILEGES;
mysql> quit
далее в my.cnf удаляем skip-grant-tables и рестартим сервис

И стараемся больше не забывать пароль.