Pertama, kita perlu memahami cara kata laluan MySQL disimpan. MySQL menyimpan kata laluan sebagai rentetan cincang yang disulitkan menggunakan fungsi penyulitan SHA1() dan rentetan rawak yang dipanggil Salt. Memandangkan proses penyulitan kata laluan MySQL tidak dapat dipulihkan, kami perlu melaksanakan beberapa langkah khusus untuk dapat memulihkannya.
Kaedah 1: Gunakan pengguna root untuk menukar kata laluan
Jika anda mempunyai kebenaran root, anda boleh menggunakan langkah berikut untuk menukar kata laluan:
1 ke pelayan MySQL sebagai root
mysql -u root -p
2 Masukkan kata laluan pengguna root
3 Masukkan baris arahan MySQL
4 memasuki baris arahan mysql, gunakan arahan berikut untuk mengubah suai kata laluan pengguna Root:
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');
Sila gantikan "new_password" dengan kata laluan baharu yang anda ingin tetapkan, dan pastikan anda menambah koma bertitik di hujung baris arahan MySQL;
5 Keluar dari MySQL dan log masuk semula dengan kata laluan baharu
Apabila menggunakan MySQL, pengguna root mempunyai kuasa tertinggi, jadi jika anda mengetahui kata laluan pengguna root, ia menjadi sangat mudah untuk menukar kata laluan MySQL.
Kaedah 2: Tetapkan semula kata laluan MySQL
Jika anda tidak boleh menukar kata laluan melalui pengguna root, atau tidak mengetahui kata laluan root langsung, maka menetapkan semula kata laluan MySQL mungkin pilihan terbaik anda. Berikut ialah dua kaedah yang biasa digunakan untuk menetapkan semula kata laluan MySQL:
Kaedah 1: Gunakan skip-grant-tables untuk menetapkan semula kata laluan MySQL
Kaedah ini akan melangkau proses pengesahan pengguna MySQL, Dan membolehkan anda untuk log masuk ke MySQL tanpa memberikan kata laluan. Berikut ialah langkah khusus:
1 Hentikan perkhidmatan MySQL
sudo systemctl stop mysql
2. Jalankan arahan berikut untuk melangkau proses pengesahan pengguna MySQL:
sudo mysqld_safe --skip-grant-tables &
3 Log masuk ke pelayan MySQL sebagai root
mysql -u root
4 arahan untuk menukar kata laluan:
mysql> UPDATE mysql.user SET Password=PASSWORD('new_password') WHERE User='root';
Sila gantikan "new_password" dengan kata laluan baharu yang anda ingin tetapkan dan pastikan anda menambah koma bertitik di hujung baris arahan MySQL ;
5. Muat semula jadual mysql .user
mysql> FLUSH PRIVILEGES;
6. Keluar dari MySQL dan mulakan semula MySQL >7. Log masuk ke MySQL sekali lagi menggunakan kata laluan baharu
Kaedah 2: Gunakan skrip tetapan semula untuk menetapkan semula kata laluan MySQL sudo systemctl start mysql
2. Cari fail data MySQL
Secara lalai, MySQL akan Fail datanya disimpan dalam direktori /var/lib/mysql. Lokasi sebenar fail data boleh didapati dengan melaksanakan arahan berikut: sudo systemctl stop mysql
3. Buat skrip tetapan semula
Sila gunakan arahan berikut untuk menyimpan kod berikut untuk resetmysql.sh Dalam fail: sudo find / -name "*.frm"
#!/bin/bash /usr/sbin/mysqld --skip-grant-tables --skip-networking & sleep 5s mysql -u root <<EOF UPDATE mysql.user SET Password=PASSWORD('new_password') WHERE User='root'; FLUSH PRIVILEGES; EOF killall mysqld sleep 5s /usr/sbin/mysqld --skip-networking &
5. . Mulakan MySQL
sudo bash resetmysql.sh
6 Log masuk ke MySQL sekali lagi dengan kata laluan baharu
Pada ketika ini, pembaca sepatutnya sudah mengetahui dua kaedah berikut untuk menyelesaikannya. masalah terlupa kata laluan MySQL: Gunakan pengguna root Tukar kata laluan dan gunakan skrip tetapan kata laluan MySQL untuk menetapkan semula kata laluan. sudo systemctl start mysql
Atas ialah kandungan terperinci Bagaimana untuk membetulkan kata laluan mysql jika saya terlupa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!