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

Debian/Ubuntu

1) Останавливаем службу MySQL:

/etc/init.d/mysql stop

2) Запускаем службу с опцией --skip-grant-tables

mysqld_safe --skip-grant-tables &

3) Подключаемся с серверу MySQL при помощи клиента mysql без ввода пароля:

mysql -u root

4) Вводим новый пароль для root:

mysql> use mysql;
mysql> update user set password=PASSWORD("New-secret-pass") where User='root';
mysql> flush privileges;

Centos

В Centos 7 можно посмотреть автоматически сгенерированный пароль так:

sudo grep 'temporary password' /var/log/mysqld.log
В ответе увидим текущий пароль root:

[Note] A temporary password is generated for root@localhost: z,9zk<x:A0*!
````

Сброс пароля в Centos 7.

1) Останавливаем mysql:
systemctl stop mysqld
2) Устанавливаем переменную окружения MySQL:
systemctl set-environment MYSQLD_OPTS=”–skip-grant-tables”
3) Запускаем MySQL:
systemctl start mysqld
4) Логинимся под `root` без пароля и меняем пароль:
mysql -u root mysql> UPDATE mysql.user SET authentication_string = PASSWORD(‘MyNewPassword’) WHERE User = ‘root’ AND Host = ‘localhost’; mysql> FLUSH PRIVILEGES; mysql> quit
Для версий 5.7.6 и старше, необходимо использовать другую команду SQL:

```sql
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

5) Останавливаем MySQL, возвращаем переменную MYSQLD_OPTS и вновь запускаем:

systemctl stop mysqld
systemctl unset-environment MYSQLD_OPTS
systemctl start mysqld
6) Заходим в mysql от имени root с новым паролем.

Обновлено: 18.01.2024