Имам решение!
Когато нулирате root паролата на стъпка 2), също променете приставката за удостоверяване на 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 commands => копирайте, поставете това в 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
файл
Въпросът също не беше там. Ако не сте сигурни, това може да ви помогне .