Не удается сбросить пароль root с --skip-grant-tables на ubuntu 16
Я пытаюсь сбросить пароль root после MysqlPasswordReset но когда я пытаюсь запустить сервер с -- skip-grant-tables сервер не запускается
- Ubuntu 16.04.1 LTS (GNU/Linux 4.4.0-59-generic x86_64)
- MySQL Ver 14.14 дистрибутив 5.7.17, для Linux (x86_64)
сервер работает
$ mysql -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
остановить сервер
$ sudo /etc/init.d/mysql stop
[ ok ] Stopping mysql (via systemctl): mysql.service.
попытка начать с -- пропустить-грант-таблицы
sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &
[1] 9856
подключение без пароля
$ mysql -u root
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
[1]+ Exit 1 sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking
Я также попытался начать с mysql_safe (ошибка.журнал пуст)
sudo mysqld_safe --skip-grant-tables
2017-02-01T16:33:31.382105Z mysqld_safe Logging to syslog.
2017-02-01T16:33:31.383942Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2017-02-01T16:33:31.386058Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2017-02-01T16:33:31.388009Z mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.
3 ответов
я обнаружил, что mysql.носок удаляется, когда служба mysql остановлена, и mysqld_safe не может ее создать (я не мог найти причину), поэтому мое решение было резервное копирование папки sock и восстановление перед запуском mysqld_safe
запустить сервер
$ sudo service mysql start
перейти к папке носок
$ cd /var/run
назад носок
$ sudo cp -rp ./mysqld ./mysqld.bak
остановить сервер
$ sudo service mysql stop
восстановить носок
$ sudo mv ./mysqld.bak ./mysqld
старт mysqld_safe
$ sudo mysqld_safe --skip-grant-tables --skip-networking &
Init MySQL shell
mysql -u root
смена пароля
FLUSH PRIVILEGES;
SET PASSWORD FOR root@'localhost' = PASSWORD('my_new_password');
pedronalbert это ответ выше работал для меня, но последний шаг устарела и выдает следующее предупреждение:
Warning | 1287 / 'SET PASSWORD FOR = PASSWORD(")' устарел и будет удален в будущем выпуске. Пожалуйста, используйте SET PASSWORD FOR = " вместо
вместо этого используйте эту команду:
SET PASSWORD FOR root = '<plaintext_password>';
Я пробовал много способов, включая @pedronalbert, но все еще не работает.
то, как я решил это, добавляет"пропустить-грант-столы" в / etc / my.cnf затем запустите службу mysql и подключите mysql с "в mysql -u в корень " as https://www.codero.com/knowledge-base/content/33/296/en/how-to-reset-your-root-mysql-password.html
Он работает в моем VM CentOS 7.