Mengatasi phpMyAdmin:"mysqli_real_connect(): (HY000/1698): Access denied for user 'root"@localhost

Secara software database ini fork dari MySQL sebagaimana diceritakan saat install MariaDB. Maka sangat wajar jika perilaku MariaDB tidak jauh berbeda dengan MySQL. Begitu juga dengan error yang terjadi di phpMyAdmin dengan keterangan sebagaimana judul di atas. 

Hal ini sepertinya karena MariaDB tidak mengizinkan akses login jarak jauh melalui browser. Alasannya tentu karena masalah keamanan sebagaimana dimaklumi bersama. Coba saja bayangkan jika ada database sebuah situs web yang bisa login meskipun tanpa password. Untuk username "root" saja pemula pasti tahu apalagi mesin bot peretas yang bekerja men-scan secara terus menerus.

Untuk itulah sangat disarankan untuk database Mariadb agar tidak menggunakan username root apalagi dengan tanpa password. Beda kasus jika web server yang sedang dibangun hanya bersifat lokal di rumah. Server web yang seperti ini boleh-boleh saja menggunakan username "root" dan tanpa password. Karena memang tujuannya untuk belajar agar lebih cepat masuk ke dalam database. 

Masalahnya, ketika mencoba masuk melalui phpMyAdmin melalui browser ada keterangan:"Cannot log in to the MySQL server" dan :"mysqli_real_connect(): (HY000/1696): Acess denied for user 'root"@'localhost'. Sedangkan server web ini padahal disetting untuk rumahan. Kira-kira apa yang harus kita lakukan agar bisa login ke server MariaDB melalui browser?

Mengatasi phpMyAdmin:"mysqli_real_connect(): (HY000/1698): Access denied for user 'root"@localhost


Cara Mengatasi phpMyAdmin:"mysqli_real_connect(): (HY000/1698): Access denied for user 'root"@localhost

Sebelum masuk inti persoalan lebih jauh ada baiknya mengenal MariaDB. Silahkan login ke server menggunakan perintah "sudo mysql" dan tekan enter melalui terminal. Setelah itu ketik perintah:"SELECT user,plugin,host FROM mysql.user WHERE user ='root';

Setelah menekan tombol enter pada keyboard akan tampak seperti berikut:

Sebagaimana terlihat pada gambar di atas, user "root" menggunakan plugin "unix_socket". Melansir dari MariaDB, plugin otentikasi ini merupakan mekanisme keamanan tanpa kata sandi. Keamanannya terletak pada kekuatan akses ke pengguna Unix daripada kerumitan dan kerahasiaan kata sandi. Plugin ini diinstal secara default untuk versi 10.4.3 dan yang lebih baru. 

Lebih lanjut dikatakan bahwa, plugin "unix_socket" memungkinkan pengguna menggunakan kredensial sistem operasi. Namun metode ini tidak cocok untuk beberapa pengguna Unix yang mengakses satu akun pengguna MariaDB. 

Jadi kemungkinannya, plugin inilah yang mencegah phpMyAdmin dari login melalui akun root. Sehingga solusi untuk mengatasi error tersebut ada dua; 1. Merubah plugin otentikasi user root menjadi mysql_native_password, atau metode ke-2. Membuat supser user baru yang digunakan untuk login melalui browser dari phpMyAdmin.

Cara 1: Merubah Plugin Otentikasi User 'root' di MariaDB

Berikut ini langkah selengkapnya cara merubah plugin otentitasi dari "unix_socket" menjadi "mysql_native_password" di MariaDB.

1. Login ke MariaDB dengan cara ketik perintah: sudo mysql dan tekan enter. Kemudian masukan password user root sistem operasi Linux yang digunakan dan tekan enter.

2. Ketik perintah: SELECT user,plugin,host FROM mysql.user WHERE user='root'; dan tekan enter.

3. Ketik perintah: ALTER USER root@localhost IDENTIFIED VIA mysql_native_password; dan tekan enter. 

4. Jika ingin menambahkan password di sini bisa dengan perintah: SET PASSWORD = PASSWORD(''); dan tekan enter. Pada contoh kali ini password tidak diisi alias kosong. 

5. Untuk memeriksa perubahan plugin ketik perintah: SELECT user,plugin,host FROM mysql.user WHERE user='root'; dan tekan enter. Lihat! Plugin untuk user root sudah berubah.

6. Langkah terakhir ketik perintah: FLUSH PRIVILEGES; dan tekan enter.

7. Sekarang silahkan login menggunakan akun user: root dengan tanpa password. Klontraaaaang........ akhirnya kita bisa masuk server database melalui phpMyAdmin meskipun via UNIX_SOCKET.


Cara Membuat Super User Baru di MariaDB untuk phpMyAdmin

Metode di atas sebetulnya sudah cukup dilakukan agar kita bisa langsung bekerja dengan MariaDB. Tapi jika kita tidak ingin menggunakan cara di atas, berikut ini pilihan yang bisa ditempuh.

1. Buka terminal dan ketik perintah: CREATE USER 'nama-user'@'localhost' IDENTIFIED VIA mysql_native_password;. Pada contoh di bawah ini menggunakan "yusufphp' sebagai nama usernya.

2. Ketik perintah: SET PASSWORD = PASSWORD('12345'); dan tekan enter. Perintah memberikan kata password 12345 untuk user root baru di phpMyAdmin, silahkan ganti sesuai kehendak Anda.

3. Ketik perintah: FLUSH PRIVILEGES; dan tekan enter.

4. Sekarang, kita sudah mempunyai akun superuser yang baru. Silahkan buka phpMyAdmin dan login dengan username tersebut. Dan apa yang saya alami, username baru dengan password baru tersebut berhasil login. Yang menjadi pertanyaan, saya coba login dengan username 'root' tapi dengan password 'super user' yang baru dibuat ternyata berhasil login juga. Hmmmm.....ini jadi bahan belajar web server otodidak saya lagi nih. 

RALAT 14 Februari 2022: Untuk pemberian hak akses user "yusufphp" dengan perintah pada nomor 3 belum lengkap. Efeknya, user baru hanya bisa login melalui phpMyAdmin. Sedangkan pada saat ingin membuat database ternyata tidak bisa. Penjelasan selengkapnya saya dokumentasikan di sini

5. Dengan ini, maka perintah "sudo mysql" melalui terminal juga tidak bisa lagi diakses. Sebagai gantinya bisa dengan perintah "sudo mysql -u root -p".

Sekian belajar web server kita kali ini tentang MariaDB server yang diakses melalui phpMyAdmin. Harapan saya semoga dengan artikel ini bisa membantu mengatasi error phpMyAdmin dengan keterangan:"mysqli_real_connect(): (HY000/1698): Access denied for user 'root"@localhost

Terima kasih sudah berkunjung.

Baca Juga

Tidak ada komentar:

Posting Komentar