Я отримав рішення!
Під час скидання пароля root на кроці 2) також змініть плагін auth на mysql_native_password
:
use mysql;
update user set authentication_string=PASSWORD("") where User='root';
update user set plugin="mysql_native_password" where User='root'; # THIS LINE
flush privileges;
quit;
Це дозволило мені успішно ввійти!
Повне рішення коду
1. запускайте команди bash
1. спочатку запустіть ці команди bash
sudo /etc/init.d/mysql stop # stop mysql service
sudo mysqld_safe --skip-grant-tables & # start mysql without password
# enter -> go
mysql -uroot # connect to mysql
2. потім запустіть mysql команди => скопіюйте вставте це до cli вручну
use mysql; # use mysql table
update user set authentication_string=PASSWORD("") where User='root'; # update password to nothing
update user set plugin="mysql_native_password" where User='root'; # set password resolving to default mechanism for root user
flush privileges;
quit;
3. виконуйте більше команд bash
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start # reset mysql
# try login to database, just press enter at password prompt because your password is now blank
mysql -u root -p
4. Випуск розетки (з ваших коментарів)
Коли ви бачите помилку сокета , спільнота отримала 2 можливих рішення:
sudo mkdir -p /var/run/mysqld; sudo chown mysql /var/run/mysqld
sudo mysqld_safe --skip-grant-tables &
(спасибі @Cerin)
Або
mkdir -p /var/run/mysqld && chown mysql:mysql /var/run/mysqld
(дякую @Peter Dvukhrechensky)
Сліпі контури та можливі похибки краю
Використовуйте 127.0.0.1 замість localhost
mysql -uroot # "-hlocalhost" is default
Може призвести до "відсутнього файлу" або помилки slt.
mysql -uroot -h127.0.0.1
Працює краще.
Пропустіть випуск розетки
Я знайшов багато способів створити mysqld.sock
файл, змінити права доступу або символізувати його. Зрештою, це не було питанням.
Пропустіть my.cnf
файл
Питання також не було. Якщо ви не впевнені, це може вам допомогти .