Иногда приходит момент когда по какой то причине нужно получить полный доступ к 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 и более поздней версии, используется следующая команда:
Для MySQL 5.7.5 и старше, а также MariaDB 10.1.20 и старше, используется следующая команда:
Примечание: Если команда ALTER USER не работает, это обычно свидетельствует о более серьезной проблеме. Тем не менее, вы можете попробовать UPDATE … SET для сброса пароля:
И уже после всех действий перезагрузим таблицу привилегий:
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 то все нормально.