Коли я використовував код, mysqld_safe --skip-grant-tables &
але я отримую помилку:
Каталог mysqld_safe '/ var / run / mysqld' для файлу сокетів UNIX не існує.
$ systemctl stop mysql.service
$ ps -eaf|grep mysql
$ mysqld_safe --skip-grant-tables &
Я вирішив:
$ 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 та / або її філій. Інші імена можуть бути торговими марками відповідних власників.
Введіть "help;" або "\ h" для довідки. Введіть '\ c', щоб очистити поточний оператор вводу.
mysql>
Тепер час змінити пароль:
mysql> use mysql
mysql> describe user;
Читання інформації таблиці для заповнення назв таблиці та стовпців Ви можете вимкнути цю функцію, щоб отримати швидший запуск з -A
База даних змінена
mysql> FLUSH PRIVILEGES;
mysql> SET PASSWORD FOR root@'localhost' = PASSWORD('newpwd');
або Якщо у вас є кореневий обліковий запис 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';
А якщо у вас є кореневий обліковий запис, до якого можна отримати доступ звідусіль:
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>