Я пытаюсь понять, как сбросить 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