Saat menjalankan php artisan migrate atau membuka aplikasi Laravel, Anda mungkin bertemu error ini:
SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES)
Artinya: Laravel gagal login ke MySQL karena kredensial database salah. Ini murni soal konfigurasi koneksi, bukan bug kode. Berikut penyebab dan solusinya.
1. Cek Kredensial di File .env
Penyebab paling umum: username, password, atau nama database di .env tidak cocok dengan yang ada di MySQL. Periksa bagian ini:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=nama_database
DB_USERNAME=user_database
DB_PASSWORD=password_database
Pastikan setiap nilai benar-benar sama dengan kredensial database Anda. Kesalahan ketik satu huruf saja sudah memicu error 1045.
2. Password Kosong? Kosongkan dengan Benar
Jika MySQL lokal Anda tanpa password (umum di XAMPP/Laragon), DB_PASSWORD harus dibiarkan kosong:
DB_PASSWORD=
Jangan tulis DB_PASSWORD=null atau DB_PASSWORD="" karena bisa diartikan sebagai password literal.
3. Clear Config Cache Setelah Ubah .env
Laravel sering menyimpan config lama di cache. Setelah mengubah .env, wajib bersihkan:
php artisan config:clear
php artisan cache:clear
Banyak orang sudah membenarkan .env tapi error tetap muncul โ ternyata hanya karena config lama masih ter-cache.
4. User MySQL Tidak Punya Akses ke Database
Kadang user ada, tapi belum diberi hak akses ke database tertentu. Login ke MySQL dan beri privilege:
GRANT ALL PRIVILEGES ON nama_database.* TO 'user_database'@'localhost';
FLUSH PRIVILEGES;
5. Host Salah (localhost vs 127.0.0.1)
Pada beberapa konfigurasi, localhost dan 127.0.0.1 diperlakukan berbeda oleh MySQL (socket vs TCP). Jika satu gagal, coba yang lain di DB_HOST.
Khusus Shared Hosting cPanel
Di cPanel, nama database dan user biasanya diberi prefix akun, misalnya namaakun_dbblog dan namaakun_userblog. Gunakan nama lengkap dengan prefix-nya di .env, dan set DB_HOST=localhost.
Kesimpulan
Error SQLSTATE 1045 selalu berujung pada satu hal: kredensial database di .env tidak cocok atau user tidak punya akses. Periksa .env, jalankan config:clear, dan pastikan user punya privilege. Kalau Anda baru deploy ke hosting dan bertemu error 500 setelah ini, lihat juga panduan kami tentang mengatasi Error 500 Internal Server Error di Laravel.