Saya punya solusinya!
Saat menyetel ulang sandi root pada langkah 2), ubah juga plugin auth menjadi 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;
Ini memungkinkan saya untuk berhasil masuk!
Solusi kode lengkap
1. jalankan perintah bash
1. pertama, jalankan perintah bash ini
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. lalu jalankan perintah mysql => salin tempel ini ke cli secara manual
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. jalankan lebih banyak perintah 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. Masalah soket (dari komentar Anda)
Saat Anda melihat soket error, komunitas datang dengan 2 kemungkinan solusi:
sudo mkdir -p /var/run/mysqld; sudo chown mysql /var/run/mysqld
sudo mysqld_safe --skip-grant-tables &
(terima kasih kepada @Cerin)
Atau
mkdir -p /var/run/mysqld && chown mysql:mysql /var/run/mysqld
(terima kasih kepada @Peter Dvukhrechensky)
Jalur buta dan kemungkinan kesalahan tepi
Gunakan 127.0.0.1 sebagai ganti localhost
mysql -uroot # "-hlocalhost" is default
Dapat menyebabkan "file hilang" atau kesalahan slt.
mysql -uroot -h127.0.0.1
Bekerja lebih baik.
Lewati masalah soket
Saya telah menemukan banyak cara untuk membuat mysqld.sock
file, ubah hak akses atau symlink itu. Lagipula bukan itu masalahnya.
Lewati my.cnf
berkas
Masalahnya juga tidak ada. Jika Anda tidak yakin, ini mungkin membantu Anda .