Tırnaksız bir .env değerindeki # işareti yorum başlangıcı olarak yorumlanabilir ve parola kesilebilir. Ancak 1045 yalnızca paroladan değil, kullanıcı@host eşleşmesi ve MySQL yetkilerinden de oluşur.
SQLSTATE[HY000] [1045] Access denied for user
DB_PASSWORD=Guclu#Sifre2026!
DB_PASSWORD="Guclu#Sifre2026!"
PHPDotenv # karakterini yorum işareti olarak destekler. Bu nedenle özel karakterli parolalar tırnak içine alınmalıdır. Bunun yanında MySQL hesapları kullanıcı adı ve bağlanılan host birlikte değerlendirilerek doğrulanır; localhost ve 127.0.0.1 farklı bağlantı yollarına gidebilir.
Ayrıştırıcı değeri # işaretinde kesebilir.
DB_PASSWORD=Guclu#Sifre2026!DB_PASSWORD="Guclu#Sifre2026!"Uygulama TCP bekliyorsa localhost socket bağlantısına gidebilir. Sunucu yapısına göre doğru olan seçilmelidir.
DB_HOST=localhostDB_HOST=127.0.0.1MySQL kullanıcı hesabındaki host bölümü gerçek bağlantı kaynağıyla eşleşmelidir.
'uygulama'@'localhost''uygulama'@'127.0.0.1' veya uygun '%' kaydıParolayı terminal geçmişine veya destek kaydına açık biçimde basmayın.
grep -nE '^(DB_CONNECTION|DB_HOST|DB_PORT|DB_DATABASE|DB_USERNAME)=' .env
grep -n '^DB_PASSWORD=' .env | sed 's/=.*/=***MASKED***/'
Parolayı komut satırına yazmayın; -p sonrasında etkileşimli girin.
mysql --protocol=TCP -h 127.0.0.1 -P 3306 -u uygulama -p veritabani
Yetkili MySQL hesabıyla çalıştırılmalıdır.
SELECT User, Host, plugin FROM mysql.user WHERE User='uygulama';
SHOW GRANTS FOR 'uygulama'@'localhost';
Düzeltilmiş .env değerinin uygulamaya yüklenmesini sağlar.
php artisan optimize:clear
php artisan config:cache
php artisan migrate:status
Mevcut .env dosyasının izinli bir yedeğini alın.
DB_PASSWORD değerini çift tırnak içine alın ve gerçek parolayı değiştirmeden kaydedin.
DB_HOST değerini sunucunun socket veya TCP düzenine göre doğrulayın.
MySQL CLI ile aynı kullanıcı ve veritabanına bağlantıyı test edin.
Kullanıcı@host kaydı ve GRANT yetkilerini kontrol edin.
Laravel config önbelleğini temizleyip bağlantıyı yeniden doğrulayın.
Parola, kullanıcı@host veya authentication plugin eşleşmiyor.
MySQL portu dinlemiyor veya firewall engelliyor.
localhost socket yolu yanlış veya socket mevcut değil.
DB_DATABASE adı hatalı veya veritabanı oluşturulmamış.
Aramanızla eşleşen hata bulunamadı.
Dotenv sözdiziminde # yorum işaretidir. Özel karakter içeren değeri tırnaklamak, karakterin değerin parçası olarak kalmasını sağlar.
Yerel MySQL düzenine bağlıdır. 127.0.0.1 açıkça TCP kullanır; localhost bazı sürücülerde socket kullanabilir. İkisini test ederek sunucunuza uygun olanı seçin.
Sorun yalnız .env ayrıştırmasından kaynaklanıyorsa mevcut parolayı doğru tırnaklayarak çözebilirsiniz. Yetki veya kullanıcı@host sorunu varsa ayrıca MySQL tarafı düzeltilmelidir.
Laravel, PHP-FPM, Nginx, Apache, MySQL, cPanel ve Plesk katmanlarını loglarla birlikte inceleyerek kalıcı çözüm uyguluyoruz.