Skip to content

Public beta — free forever, no account required Download now →

Panduan

Cara mengatasi error #1045 phpMyAdmin “Access denied for user root@localhost”

“mysqli::real_connect(): (HY000/1045): Access denied for user 'root'@'localhost' (using password: NO)”. Artinya MySQL menerima login dari phpMyAdmin tapi menolaknya: user, password atau server di konfigurasi phpMyAdmin tidak cocok dengan database. Biasanya ini terjadi setelah password root diganti, setelah MySQL lain ikut terpasang dan mengambil port 3306, atau setelah upgrade mengubah cara MySQL memeriksa password. Bagian akhir pesan error menunjukkan penyebabnya.

Platform
Windows 10/11 dengan XAMPP di C:\xampp (langkah pengecekannya berlaku untuk phpMyAdmin mana pun)
Waktu
Sekitar 10 menit
Yang Anda perlukan
  • Akses tulis ke config.inc.php milik phpMyAdmin (di XAMPP: C:\xampp\phpMyAdmin\config.inc.php)
  • Command Prompt, untuk mengetes login dan mereset password

Path XAMPP mengikuti instalasi default di C:\xampp. Detail EnvKit diperiksa pada versi 0.33.0-beta.56 (2026-10-29). EnvKit tersedia dalam Bahasa Indonesia; nama menu ditulis seperti di antarmuka Indonesia, dengan nama bahasa Inggrisnya di dalam kurung.

  1. Langkah 1: Lihat bagian akhir pesan error

    using password: NO berarti phpMyAdmin tidak mengirim password, padahal root punya password. using password: YES berarti phpMyAdmin mengirim password dan MySQL menolaknya: password-nya salah, atau phpMyAdmin tersambung ke server yang berbeda dari yang Anda kira.

    Kalau kodenya #2002 atau #2054, bukan #1045, penyebabnya lain; keduanya dibahas di bagian kendala di bawah.

  2. Langkah 2: Tes login di luar phpMyAdmin

    Pakai client MySQL bawaan server. Saat diminta password, tekan Enter untuk mencoba password kosong, atau ketik password yang Anda ingat. Kalau berhasil, phpMyAdmin cukup diberi password itu di konfigurasinya. Kalau tidak ada yang berhasil, reset password-nya (langkah 5).

    Command Prompt
    C:\xampp\mysql\bin\mysql.exe -u root -p -h 127.0.0.1 -P 3306
  3. Langkah 3: Cek config.inc.php

    phpMyAdmin di XAMPP login otomatis memakai user dan password yang tertulis di config.inc.php. Kalau auth_type bernilai config, isi password harus sama dengan password root yang sebenarnya. Ganti auth_type ke cookie kalau Anda lebih suka form login dan mengetik password setiap membuka phpMyAdmin; mode cookie juga butuh blowfish_secret sepanjang 32 karakter.

    Simpan file lalu muat ulang halaman phpMyAdmin. Tidak ada yang perlu di-restart.

    C:\xampp\phpMyAdmin\config.inc.php
    $cfg['Servers'][$i]['auth_type'] = 'config';   // atau 'cookie' untuk form login
    $cfg['Servers'][$i]['user'] = 'root';
    $cfg['Servers'][$i]['password'] = 'password-root-anda';
    $cfg['Servers'][$i]['host'] = '127.0.0.1';
    $cfg['Servers'][$i]['port'] = '3306';
    $cfg['Servers'][$i]['AllowNoPassword'] = true;
  4. Langkah 4: Pastikan phpMyAdmin tersambung ke server yang benar

    Kalau ada MySQL lain yang terpasang (layanan MySQL80 dari MySQL Installer, WampServer, Laragon), bisa jadi dialah yang memakai port 3306, lengkap dengan password root-nya sendiri. Cari PID di port itu lalu cek namanya. Kalau bukan mysqld.exe milik XAMPP, hentikan layanan itu di services.msc, atau pindahkan MySQL XAMPP ke port lain di my.ini dan isi port yang sama di config.inc.php.

    Command Prompt
    netstat -ano | findstr LISTENING | findstr :3306
    tasklist /FI "PID eq 1234"
  5. Langkah 5: Reset password root yang terlupa

    Hentikan MySQL di Control Panel. Jalankan MySQL secara manual tanpa tabel hak akses, sehingga root bisa masuk tanpa password, lalu pasang password baru dari jendela kedua. Selama mode ini aktif, siapa pun di komputer ini bisa masuk, jadi selesaikan sekaligus.

    Command Prompt
    REM Jendela 1: jalankan MySQL tanpa tabel hak akses
    C:\xampp\mysql\bin\mysqld.exe --defaults-file=C:\xampp\mysql\bin\my.ini --skip-grant-tables
    
    REM Jendela 2: pasang password baru, lalu matikan server
    C:\xampp\mysql\bin\mysql.exe -u root
    FLUSH PRIVILEGES;
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'password-baru';
    exit
    C:\xampp\mysql\bin\mysqladmin.exe -u root -p shutdown
  6. Langkah 6: MySQL 8 dan plugin autentikasi

    MySQL 8 membuat user dengan caching_sha2_password. PHP atau phpMyAdmin yang terlalu lama untuk plugin itu gagal dengan #2054 “The server requested authentication method unknown to the client”. Perbarui PHP dan phpMyAdmin dulu. Di MySQL 8.0, root bisa dikembalikan ke plugin lama sebagai solusi sementara, tapi MySQL 8.4 mematikan mysql_native_password secara default dan MySQL 9 menghapusnya. MariaDB, yang dipakai XAMPP, memakai mysql_native_password secara default.

    MySQL 8.0
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password-anda';
  7. Langkah 7: Atau pakai MySQL dan phpMyAdmin dari EnvKit

    EnvKit adalah aplikasi gratis yang memasang MySQL atau MariaDB, phpMyAdmin dan bagian lain dari stack PHP. Hentikan dulu MySQL di XAMPP supaya keduanya tidak berebut port 3306.

    Atau instal dari terminal
    irm https://envkit.net/install.ps1?c=id-guide | iex
  8. Langkah 8: Cara phpMyAdmin di EnvKit login

    EnvKit menulis config.inc.php untuk phpMyAdmin sendiri: login config sebagai root dengan password kosong ke 127.0.0.1 di port MySQL milik EnvKit, jadi phpMyAdmin langsung terbuka tanpa form login. Buka dari halaman Database (Databases) lewat tombol Buka phpMyAdmin (Open phpMyAdmin).

    Kalau Anda memberi password pada root, isi password itu di Layanan → phpMyAdmin → Pengaturan (Services → phpMyAdmin → Settings) pada kolom MySQL password (config auth), atau ubah Auth type ke cookie supaya form login muncul lagi. Port database yang Anda ganti di EnvKit ikut tertulis di konfigurasi phpMyAdmin.

Jika ada yang tidak berjalan

#2002 “No connection could be made because the target machine actively refused it”
Tidak ada server yang mendengarkan di host dan port yang dipakai phpMyAdmin. Jalankan MySQL, lalu pastikan port di config.inc.php sama dengan baris port= di my.ini.
“Connection for controluser as defined in your configuration failed”
Ini soal user kontrol pma yang dipakai phpMyAdmin untuk fitur tambahannya, terpisah dari login root Anda. Perbaiki controluser dan controlpass di config.inc.php, atau jadikan kedua baris itu komentar supaya phpMyAdmin jalan tanpa fitur tersebut.
Root bisa login di terminal, tapi tidak di phpMyAdmin
Bagi MySQL, root@localhost dan [email protected] adalah dua akun terpisah yang bisa punya password berbeda. Bandingkan host di config.inc.php dengan alamat yang Anda pakai di terminal, lalu samakan password kedua akun itu.