Saya mencoba banyak langkah untuk memperbaiki masalah ini. Ada begitu banyak sumber untuk solusi yang mungkin untuk masalah ini yang sulit untuk menyaring pengertian dari omong kosong. Saya akhirnya menemukan solusi yang baik di sini :
Langkah 1: Identifikasi Versi Database
$ mysql --version
Anda akan melihat beberapa output seperti ini dengan MySQL:
$ mysql Ver 14.14 Distrib 5.7.16, for Linux (x86_64) using EditLine wrapper
Atau keluaran seperti ini untuk MariaDB:
mysql Ver 15.1 Distrib 5.5.52-MariaDB, for Linux (x86_64) using readline 5.1
Catat basis data dan versi mana yang Anda jalankan, karena Anda akan menggunakannya nanti. Selanjutnya, Anda harus menghentikan basis data sehingga Anda dapat mengaksesnya secara manual.
Langkah 2: Menghentikan Server Database
Untuk mengubah kata sandi root, Anda harus mematikan server database terlebih dahulu.
Anda dapat melakukannya untuk MySQL dengan:
$ sudo systemctl stop mysql
Dan untuk MariaDB dengan:
$ sudo systemctl stop mariadb
Langkah 3: Restart Server Database Tanpa Memeriksa Izin
Jika Anda menjalankan MySQL dan MariaDB tanpa memuat informasi tentang hak pengguna, itu akan memungkinkan Anda untuk mengakses baris perintah basis data dengan hak akses root tanpa memberikan kata sandi. Ini akan memungkinkan Anda untuk mendapatkan akses ke database tanpa menyadarinya.
Untuk melakukan ini, Anda harus menghentikan database dari memuat tabel hibah, yang menyimpan informasi hak istimewa pengguna. Karena ini sedikit risiko keamanan, Anda juga harus melewati jaringan juga untuk mencegah klien lain terhubung.
Mulai database tanpa memuat tabel hibah atau mengaktifkan jaringan:
$ sudo mysqld_safe --skip-grant-tables --skip-networking &
Ampersand di akhir perintah ini akan membuat proses ini berjalan di latar belakang sehingga Anda dapat terus menggunakan terminal Anda.
Sekarang Anda dapat terhubung ke database sebagai pengguna root, yang seharusnya tidak meminta kata sandi.
$ mysql -u root
Anda akan segera melihat prompt shell basis data.
MySQL Prompt
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
Prompt MariaDB
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
Sekarang Anda memiliki akses root, Anda dapat mengubah kata sandi root.
Langkah 4: Mengubah Kata Sandi Root
mysql> FLUSH PRIVILEGES;
Sekarang kita benar-benar dapat mengubah kata sandi root.
Untuk MySQL 5.7.6 dan yang lebih baru serta MariaDB 10.1.20 dan yang lebih baru , gunakan perintah berikut:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
Untuk MySQL 5.7.5 dan yang lebih lama serta MariaDB 10.1.20 dan yang lebih lama , gunakan:
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');
Pastikan untuk mengganti new_password
dengan kata sandi pilihan baru Anda.
Catatan: Jika ALTER USER
perintah tidak berfungsi, biasanya ini mengindikasikan masalah yang lebih besar. Namun, Anda dapat mencoba UPDATE ... SET
mengatur ulang kata sandi root.
[PENTING] Ini adalah baris spesifik yang memperbaiki masalah khusus saya:
mysql> UPDATE mysql.user SET authentication_string = PASSWORD('new_password') WHERE User = 'root' AND Host = 'localhost';
Ingatlah untuk memuat kembali tabel hibah setelah ini.
Dalam kedua kasus, Anda akan melihat konfirmasi bahwa perintah telah berhasil dijalankan.
Query OK, 0 rows affected (0.00 sec)
Kata sandi telah diubah, jadi Anda sekarang dapat menghentikan instance manual dari server database dan memulai kembali seperti sebelumnya.
Langkah 5: Mulai Ulang Server Database Secara Normal
Tutorial ini masuk ke beberapa langkah lebih lanjut untuk me-restart database, tetapi satu-satunya bagian yang saya gunakan adalah ini:
Untuk MySQL, gunakan:
$ sudo systemctl start mysql
Untuk MariaDB, gunakan:
$ sudo systemctl start mariadb
Sekarang Anda dapat mengonfirmasi bahwa kata sandi baru telah diterapkan dengan benar dengan menjalankan:
$ mysql -u root -p
Perintah sekarang harus meminta kata sandi yang baru ditetapkan. Masukkan, dan Anda harus mendapatkan akses ke prompt database seperti yang diharapkan.
Kesimpulan
Anda sekarang memiliki akses administratif ke server MySQL atau MariaDB yang dipulihkan. Pastikan kata sandi root baru yang Anda pilih kuat dan aman dan simpan di tempat yang aman.