Не удается reset пароль root с помощью -skip-grant-tables на ubuntu 16
Я пытаюсь reset пароль 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.
Попытка начать с -skip-grant-tables
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 (error.log пуст)
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.
Ответы
Ответ 1
Я обнаружил, что mysql.sock удаляется, когда служба mysql останавливается, и mysqld_safe не может ее создать (я не могу найти причину), поэтому мое решение вернуло папку с носками и восстановило их до запуска mysqld_safe
Запустить сервер
$ sudo service mysql start
Перейдите в папку sock
$ 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 &
Инициировать оболочку mysql
mysql -u root
Сменить пароль
FLUSH PRIVILEGES;
SET PASSWORD FOR [email protected]'localhost' = PASSWORD('my_new_password');
Ответ 2
sudo dpkg -P mysql-server mysql-server-5.7
sudo apt-get autoremove
sudo apt-get clean
dpkg -l | grep -i mysql
sudo rm -rvf/var/lib/mysql
sudo apt-get install mysql-server