mysql-reset-password

Сброс пароля Mysql и MariaDB

Иногда приходит момент когда по какой то причине нужно получить полный доступ к mysql серверу (Потеря пароля, смена СИС Администратора и пр.)
Так вот что бы сбросить пароль или же установить свой, не так все трудно, но это может занять некоторое время в момент которого ваши проекты (сайты или пр.) могут быть недоступны.
Изначально узнаем версию mysql

1
mysql --version

В случае если у вас mysql сервер будет вывод:

1
mysql  Ver 14.14 Distrib 5.7.16, for Linux (x86_64) using  EditLine wrapper

В случае, если MariaDB:

1
mysql  Ver 15.1 Distrib 5.5.52-MariaDB, for Linux (x86_64) using readline 5.1

После того как определились с версией нужно остановить службу

1
systemctl stop mysql
1
systemctl stop mariadb

Далее нужно запустить сервер без загрузки пользовательских привилегий

1
mysqld_safe --skip-grant-tables --skip-networking &

И теперь зайти в mysql shell без пароля

1
mysql -u root

Для MySQL 5.7.6 и выше, а так же MariaDB 10.1.20 и более поздней версии, используется следующая команда:

1
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';

Для MySQL 5.7.5 и старше, а также MariaDB 10.1.20 и старше, используется следующая команда:

1
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('password');

Примечание: Если команда ALTER USER не работает, это обычно свидетельствует о более серьезной проблеме. Тем не менее, вы можете попробовать UPDATE … SET для сброса пароля:

1
UPDATE mysql.user SET authentication_string = PASSWORD('password') WHERE User = 'root' AND Host = 'localhost';

И уже после всех действий перезагрузим таблицу привилегий:

1
FLUSH PRIVILEGES;

На данном этапе mysql запущен без загрузки привилегий, нужно остановить данный экземпляр mysql
Для mysql используйте команду:

1
kill `cat /var/run/mysqld/mysqld.pid`

Для MariaDB используйте:

1
kill `cat /var/run/mariadb/mariadb.pid`

И запустить сервис в нормальном рещиме работы
Для mysql:

1
systemctl start mysql

Для MariaDB:

1
systemctl start mariadb

Проверить обновился ли пароль можно войти в mysql shell

1
mysql -u root -pPassword

Если откроется mysql shell то все нормально.