Сбросить пароль администратора root в MySQL 8

Я пытаюсь понять, как сбросить root Пароль пользователей MySQL. Я обнаружил:

https://www.tecmint.com/reset-root-password-in-mysql-8/

Я попробовал первый вариант, и сначала он работает:

root@admin:~# cat /tmp/init-file.txt
ALTER USER 'root'@'localhost' IDENTIFIED BY 'testPASS';
root@admin:~#

Тогда я бегу:

root@admin:~#  mysqld --user=mysql --init-file=/tmp/init-file.txt --console

root@admin:~#

Тем не менее, когда я пытаюсь войти в систему с новым паролем, я получаю:

root@admin:~# mysql -uroot -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

Что я делаю неправильно? Раньше мне никогда не приходилось сбрасывать пароль root, поэтому я не уверен, что пропустил что-то глупое

ОБНОВЛЕНИЕ: Интересно, что, хотя я делаю "остановку службы mysql", кажется, что он все еще работает:

root      4992  0.0  0.0  52700  3904 pts/0    S    15:33   0:00 sudo mysqld_safe --skip-grant-tables
root      4993  0.0  0.0   4504  1720 pts/0    S    15:33   0:00 /bin/sh /usr/bin/mysqld_safe --skip-grant-tables
mysql     5580  1.1 15.8 10668984 1291760 pts/0 Sl  15:33   0:10 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --skip-grant-tables --log-error=/var/log/mysql/error.log --open-files-limit=2048 --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --port=3306

Как мне убить его полностью?

ОБНОВЛЕНИЕ 2:

Даже если убедиться, что mysql полностью закрыт, он все равно не работает:

root@admin:~# mysqld --user=mysql --init-file=/tmp/init-file.txt --console
root@admin:~# service mysql start
root@admin:~# mysql -uroot -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

Я даже попытался "сбросить" в файле для сброса паролей:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'xxx';

flush privileges;

2 ответа

Попробуй это:

grep 'A temporary password is generated' /var/log/mysqld.log | tail -1

и после запуска следующую команду, чтобы применить безопасность на сервере MySQL. Просто выполните приведенную ниже команду и следуйте указаниям мастера безопасности:

sudo mysql_secure_installation

Следуйте инструкциям на экране. Измените пароль учетной записи root и нажмите Y для всех других операций, чтобы применить повышенную безопасность.

Изменить пароль для root? - Нажмите y и измените пароль root
Удалить анонимных пользователей? Нажмите y Запретить root-вход удаленно? Нажмите y
Удалить тестовую базу данных и получить к ней доступ? (Нажмите y Перезагрузить таблицы привилегий сейчас? Нажмите y

Вместо того, чтобы пытаться сбросить пароль root, вы можете попытаться вообще пропустить загрузку таблиц грантов, и тогда пароль root будет пустым.

sudo mysqld stop
mysqld --skip-grant-tables --user=mysql &
mysql
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_passowrd';
quit;
service mysql start

или, если вы действительно хотите использовать файл сценария:

mysqld stop
mysqld --skip-grant-tables --user=mysql &
mysql < init_file.txt
mysqld stop
service mysql start

Вы остановили процесс MySQL, прежде чем пытаться запустить его с mysqld? Возможно, что mysql-daemon уже запущен, и в результате init-файл так и не был выполнен. Попробуйте выключить mysqld, затем повторите процесс.

Другие вопросы по тегам