Сбросить пароль администратора 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, затем повторите процесс.