Saya punya solusi!
Saat mengatur ulang kata sandi root pada langkah 2), ubah juga plugin autentikasi 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 masuk dengan sukses!
Solusi kode lengkap
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. Kemudian 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. Soket masalah (dari komentar Anda)
Saat Anda melihat soket error, komunitas hadir 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 daripada 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, mengubah hak akses, atau menghubungkannya. Lagipula bukan itu masalahnya.
Lewati my.cnf
berkas
Masalahnya juga tidak ada. Jika Anda tidak yakin, ini dapat membantu Anda.
Untuk Ubuntu 18.04 dan mysql 5.7
-
langkah 1:
sudo mkdir /var/run/mysqld;
langkah 2:
sudo chown mysql /var/run/mysqld
langkah 3:
sudo mysqld_safe --skip-grant-tables
&keluar (gunakan quit jika macet )
masuk ke mysql tanpa kata sandi
-
langkah 4:
sudo mysql --user=root mysql
langkah 5:
SELECT user,authentication_string,plugin,host FROM mysql.user;
langkah 6:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root'
sekarang login dengan
mysql -u root -p <root>
Anda dapat mencoba sebagai berikut ini berfungsi untuk saya.
Mulai server:
sudo service mysql start
Sekarang, Buka folder kaus kaki:
cd /var/run
Cadangkan kaus kaki:
sudo cp -rp ./mysqld ./mysqld.bak
Hentikan server:
sudo service mysql stop
Pulihkan kaus kaki:
sudo mv ./mysqld.bak ./mysqld
Mulai mysqld_safe:
sudo mysqld_safe --skip-grant-tables --skip-networking &
Init shell mysql:
mysql -u root
Ubah kata sandi:
Oleh karena itu, Pertama pilih database
mysql> use mysql;
Sekarang masukkan dua kueri di bawah ini:
mysql> update user set authentication_string=password('123456') where user='root';
mysql> update user set plugin="mysql_native_password" where User='root';
Sekarang, semuanya akan baik-baik saja.
mysql> flush privileges;
mysql> quit;
Untuk pemeriksaan:
mysql -u root -p
selesai!
N.B, After login please change the password again from phpmyadmin
Sekarang centang hostname/phpmyadmin
Username: root
Password: 123456
Untuk detail lebih lanjut, silakan periksa Cara mereset kata sandi phpmyadmin yang terlupakan di Ubuntu
mysql
perintah secara default menggunakan soket UNIX untuk terhubung ke MySQL.
Jika Anda menggunakan MariaDB, Anda perlu memuat Unix Socket Authentication Plugin di sisi server.
Anda dapat melakukannya dengan mengedit [mysqld]
konfigurasi seperti ini:
[mysqld]
plugin-load-add = auth_socket.so
Bergantung pada distribusi, file konfigurasi biasanya terletak di /etc/mysql/
atau /usr/local/etc/mysql/
Jika unix_socket=OFF
diatur di bagian yang sama, aktifkan dengan mengubahnya menjadi unix_socket=ON
atau perbaikan ini tidak berlaku.