Назад | Перейти на главную страницу

Сброс пароля администратора 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, поэтому я не уверен, что упускаю что-то глупое

ОБНОВИТЬ: Интересно, что хотя я выполняю «service mysql stop», кажется, что он все еще работает:

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;

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

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

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

Вместо того, чтобы пытаться сбросить пароль 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