Як скинути пароль root в mysql в linux - для сисадмінів і не тільки

Виникла ситуація - загубили пароль від облікового запису root MySQL, якщо раніше пароль можна було подстмотреть в файлі my.cnf то в ситуації, що виникла це не преставився можливим.

Рішення в краце просте - зупинити сервіс MySQL, запустити з певним ключем, виконати пару команд, перезапустити сервіс, про що сказанно на офф. сайті. нижче "на пальцях" розсаджені як це зробити.

Весь розповідь буде виконуватися в CentOS 7, але думаю це буде актуально для багатьох Linux систем :)

Зупинка служби MySQL в CentOS

systemctl stop mysqld

Запуск служби MySQL в безпечному режимі

mysqld_safe --skip-grant-tables

Підключення клієнтом до MySQL

Для підключення я використовував той же сервер, підключившись до нього по SSH і виконавши команду:

Скидання пароля MySQL

Далі послідовно виконуємо кілька команд:

use mysql;
update user set password = PASSWORD ( "NewPassword") where User = 'root';
flush privileges;
quit

mysql -u root
Welcome to the MariaDB monitor. Commands end with; or \ g.
Your MariaDB connection id is 39
Server version: 5.5.37-MariaDB-wsrep MariaDB Server, wsrep_25.10.r3980

Type 'help;' or '\ h' for help. Type '\ c' to clear the current input statement.

MariaDB [(none)]> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [mysql]> update user set password = PASSWORD ( "NewPassword") where User = 'root';
Query OK, 3 rows affected (0.00 sec)
Rows matched: 3 Changed: 3 Warnings: 0

MariaDB [mysql]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

Зупиняємо запущену службу, в моєму випадку це був Ctrl + C і запускаємо знову:

systemctl start mysqld

Підключаємося використовуючи новий пароль: