Jag har en lösning!
När du återställer root-lösenordet i steg 2), ändra även auth-pluginet till 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;
Detta gjorde att jag kunde logga in!
Fullkodslösning
1. kör bash-kommandon
1. kör först dessa bash-kommandon
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. kör sedan mysql-kommandon => kopiera klistra in detta till cli manuellt
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. kör fler bash-kommandon
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. Problem med uttag (från dina kommentarer)
När du ser en socket fel, en gemenskap kom med två möjliga lösningar:
sudo mkdir -p /var/run/mysqld; sudo chown mysql /var/run/mysqld
sudo mysqld_safe --skip-grant-tables &
(tack vare @Cerin)
Eller
mkdir -p /var/run/mysqld && chown mysql:mysql /var/run/mysqld
(tack vare @Peter Dvukhrechensky)
Blinda vägar och möjliga kantfel
Använd 127.0.0.1 istället för localhost
mysql -uroot # "-hlocalhost" is default
Kan leda till "saknad fil" eller slt-fel.
mysql -uroot -h127.0.0.1
Fungerar bättre.
Hoppa över socketproblemet
Jag har hittat många sätt att skapa mysqld.sock
fil, ändra åtkomsträttigheter eller symlinka den. Det var inte problemet trots allt.
Hoppa över my.cnf
fil
Frågan fanns inte heller där. Om du inte är säker kan det här hjälpa dig .