Когда я использовал код, mysqld_safe --skip-grant-tables &
но получаю сообщение об ошибке:
mysqld_safe Каталог '/ var / run / mysqld' для файла сокета UNIX не существует.
$ systemctl stop mysql.service
$ ps -eaf|grep mysql
$ mysqld_safe
Я решил:
$ mkdir -p /var/run/mysqld
$ chown mysql:mysql /var/run/mysqld
Теперь я использую тот же код mysqld_safe --skip-grant-tables &
и получаю
mysqld_safe Запуск демона mysqld с базами данных из / var / lib / mysql
Если я воспользуюсь, $ mysql -u root
я получу:
Версия сервера: 5.7.18-0ubuntu0.16.04.1 (Ubuntu)
Авторское право (c) 2000, 2017, Oracle и / или ее дочерние компании. Все права защищены.
Oracle является зарегистрированным товарным знаком Oracle Corporation и / или ее дочерних компаний. Другие наименования могут быть торговыми марками их владельцев.
Введите "помощь"; или '\ h' для помощи. Введите '\ c', чтобы очистить текущий оператор ввода.
mysql>
Теперь пора сменить пароль:
mysql> use mysql
mysql> describe user;
Чтение информации таблицы для завершения имен таблиц и столбцов. Вы можете отключить эту функцию, чтобы ускорить запуск, с помощью -A.
База данных изменена
mysql> FLUSH PRIVILEGES;
mysql> SET PASSWORD FOR root@'localhost' = PASSWORD('newpwd');
или Если у вас есть учетная запись root mysql, которая может подключаться отовсюду, вам также следует сделать:
UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root';
Альтернативный метод:
USE mysql
UPDATE user SET Password = PASSWORD('newpwd')
WHERE Host = 'localhost' AND User = 'root';
И если у вас есть учетная запись root, к которой можно получить доступ отовсюду:
USE mysql
UPDATE user SET Password = PASSWORD('newpwd')
WHERE Host = '%' AND User = 'root';`enter code here
теперь нужно quit
из mysql и остановить / запустить
FLUSH PRIVILEGES;
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start
теперь снова `mysql -u root -p 'и используйте новый пароль, чтобы получить
mysql>