Can’t log into phpMyAdmin: mysqli_real_connect(): (HY000/1698): Access denied for user ‘root’@’localhost’
Kesalahan ini mungkin disebabkan oleh salah satu alasan berikut:
- Karena adanya perubahan asitektur pada MySQL 5.7 / MySQL 8+, Anda tidak dapat masuk ke phpMyAdmin menggunakan akun root.
- Anda lupa kata sandi root Anda.
- konfigurasi host untuk root mencegah akses melalui phpMyAdmin.
- Anda mencoba masuk ke phpMyAdmin menggunakan akun selain root tetapi mendapatkan pesan kesalahan “Access denied for user (using password: YES)”.
Bagaimana solusinya ?
Buat Superuser Baru untuk phpMyAdmin ( user baru setara root )
Di terminal, masuk ke MySQL sebagai root. Anda mungkin telah membuat kata sandi root saat Anda menginstal MySQL untuk pertama kali atau kata sandinya mungkin kosong
$ sudo mysql -p -u root
mysql> CREATE USER 'nama_user'@'localhost' IDENTIFIED WITH mysql_native_password BY 'passwornya_ini';
Perintah di atas akan membuat pengguna baru bernama nama_user
(nama user yang ada pilih) yang dapat mengakses server MySQL dari localhost dengan kata sandi passwornya_ini.
Silahkan disesuaikan.
Sekarang kamu bisa memberikan hak istimewa superuser ke user baru yang di buat tadi nama_user
.
mysql> GRANT ALL PRIVILEGES ON *.* TO 'nama_user'@'localhost';
Langkah terakhir Flush privileges.
mysql> FLUSH PRIVILEGES;
Cara ke 2 Ubah Metode Otentikasi root
Untuk masuk ke phpMyAdmin sebagai pengguna root MySQL Anda, Anda perlu mengganti metode autentikasinya dari auth_socket atau caching_sha2_password ke mysql_native_password.
$ sudo mysql -p -u root
mysql> SELECT user,plugin,host FROM mysql.user WHERE user = 'root';
Hasilnya :

Di atas kita dapat melihat bahwa plugin untuk akun root diatur ke auth_socket. Ini mungkin juga menunjukkan caching_sha2_password.
Anda perlu mengubahnya menjadi mysql_native_password
. Selain itu, nilai host harus disetel ke localhost
atau %
. Jika disetel ke yang lain, Anda mungkin tidak dapat masuk ke phpMyAdmin dengan root.
Jalankan perintah berikut untuk mengubah nilai plugin menjadi mysql_native_password.
Pastikan untuk mengganti enter_password_here
dengan milik Anda.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'enter_password_here';
Langkah terakhir Flush privileges.
mysql> FLUSH PRIVILEGES;
Kesimpulan : saya rekomendasikan memakai cara pertama saja lebih aman karena usernya tidak bisa ditebak oleh orang tidak bertanggungjawab. Semoga Berhasil….