Показать статистику
0 голосов
от (580 баллов)
Не могу авторизоваться как root в MySQL. Как сбросить пароль?
254 просмотров 1 ответов

1 Ответ

0 голосов
от (4.5тыс. баллов)

Для начала неплохо узнать какая у вас версия MySQL - эта инфа может пригодиться если прийдется искать решение проблемы именно для конкретной версии софта: 

mysql --version

Вывод может быть примерно таким: 

mysql Ver 8.0.21-0ubuntu0.20.04.2 for Linux on x86_64 ((Ubuntu))

Далее, останавливаем MySQL: 

sudo systemctl stop mysql

Теперь выполните: 

sudo systemctl edit mysql

Скорее всего, этот файл у вас пустой. Добавьте туда такие строки, это скажет MySQL не проверять привилегии пользователей при перезапуске: 

[Service]

ExecStart=

ExecStart=/usr/sbin/mysqld --skip-grant-tables --skip-networking

Далее, перезапустим конфигурацию MySQL: 

sudo systemctl daemon-reload

И теперь запустим MySQL: 

sudo systemctl start mysql

Теперь можно авторизоваться в MySQL как root и система не спросит пароль: 

sudo mysql -u root

Теперь зададим новый пароль для root: 

use mysql;

update user set authentication_string=PASSWORD("mynewpassword") where User='root';

flush privileges;

quit

После того как пароль задан, восстановим конфигурацию для запуска MySQL: 

sudo systemctl revert mysql

Получим примерно такой вывод: 

Removed /etc/systemd/system/mysql.service.d/override.conf.

Removed /etc/systemd/system/mysql.service.d.

И в заключение: 

sudo systemctl daemon-reload

И напоследок: 

sudo systemctl restart mysql

Осталось убедиться что пароль успешно изменен: 

mysql -u root -p
от (17.4тыс. баллов)
0

На мой взгляд вы усложнили процедуру сброса пароля. Вот мой вариант:

Для Debian / Ubuntu: 

sudo /etc/init.d/mysql stop

Для CentOS / Fedora:  

sudo /etc/init.d/mysqld stop

Теперь без всяких редактирований конфигов просто запускаем MySQL без пароля: 

sudo mysqld_safe --skip-grant-tables &

Подключаемся к базе как рут: 

mysql -u root

Теперь сбрасываем пароль: 

use mysql;

update user set authentication_string=PASSWORD("mynewpassword") where User='root';

flush privileges;

quit

 На Debian / Ubuntu, запускаем базу так: 

sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start

На Fedora / CentOS: 

sudo /etc/init.d/mysqld stop
sudo /etc/init.d/mysqld start

 Ну, собственно, и все. 

Пробуем новый пароль и радуемся: 

mysql -u root -p
...