Я отримав рішення!
Під час скидання пароля 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файл
Питання також не було. Якщо ви не впевнені, це може вам допомогти .