Bu hata, WordPress’in wp-config.php içindeki bilgilerle MySQL veya MariaDB’ye bağlanamadığını gösterir. Yanlış parola kadar servis kesintisi, disk doluluğu, bağlantı limiti, bozuk sistem tabloları ve uzak veritabanı ağı da aynı ekranı oluşturabilir.
Error establishing a database connection
mysqli_real_connect(): (HY000/1045): Access denied for user
MySQL server has gone away
WordPress sayfayı oluşturabilmek için veritabanından seçenekleri, yazıları ve kullanıcı bilgilerini okumalıdır. Bağlantı kurulamadığında uygulama katmanı başlamadan genel veritabanı hatası gösterilir.
Yanlış DB_NAME, DB_USER, DB_PASSWORD veya DB_HOST en yaygın sebeptir. Özellikle hosting taşıma, veritabanı parolası değiştirme ve kullanıcı yetkisi yenileme sonrasında wp-config.php eski kalabilir.
Sunucudaki tüm WordPress siteleri aynı anda etkileniyorsa tek site yapılandırmasından önce MySQL/MariaDB servisi, disk alanı, inode, OOM ve port 3306 dinleme durumu kontrol edilmelidir.
Yalnız wp-admin tarafında “database repair” uyarısı görülüyorsa bazı WordPress tabloları bozulmuş olabilir. Onarım öncesi veritabanı yedeği alınmalı ve WP_ALLOW_REPAIR işlem sonrasında kaldırılmalıdır.
Uzak veritabanı kullanımında DNS, firewall, izin verilen hostlar, TLS ve bağlantı gecikmesi de önemlidir. localhost ile 127.0.0.1 aynı socket davranışını göstermeyebilir.
ibdata1, ib_logfile veya veritabanı dizinlerini silmek bir WordPress çözümü değildir. Servis başlamıyorsa önce MariaDB logu ve tam yedek olmadan veri dosyalarına dokunulmamalıdır.
E-postada, tarayıcıda veya SSH günlüğünde gördüğünüz ifadeyi aratın. Her kartta anlam, muhtemel neden ve güvenli ilk işlem bulunur.
Anlamı: WordPress veritabanına bağlantı kuramamıştır.
Muhtemel neden: Yanlış wp-config bilgisi, kapalı servis veya yetki sorunu.
Anlamı: MySQL kullanıcı/parola veya host eşleşmesini reddetmiştir.
Muhtemel neden: Yanlış parola ya da kullanıcıya veritabanı yetkisi verilmemiştir.
Anlamı: Belirtilen veritabanı sunucuda bulunamamıştır.
Muhtemel neden: Yanlış DB_NAME, silinmiş veya içe aktarılmamış veritabanı.
Anlamı: PHP beklenen MySQL socket dosyasına ulaşamamıştır.
Muhtemel neden: MariaDB kapalı, socket yolu farklı veya servis başlayamıyor.
Anlamı: Kurulan bağlantı işlem sırasında kesilmiştir.
Muhtemel neden: Timeout, paket boyutu, servis restartı veya ağır sorgu.
Anlamı: MySQL eşzamanlı bağlantı sınırı dolmuştur.
Muhtemel neden: Yavaş sorgu, bot trafiği, bağlantı sızıntısı veya düşük limit.
Anlamı: WordPress temel tablosunu bulamıyor.
Muhtemel neden: Yanlış prefix, eksik import veya bozuk tablo.
Anlamı: WordPress tablo kontrolünde sorun tespit etmiştir.
Muhtemel neden: Çökme, disk sorunu veya yarım import.
Bu ifadeyle eşleşen kayıt bulunamadı.
Komutlar root erişimi içindir. Önce yalnızca durum ve log toplayın; nedeni görmeden kalıcı ayar değiştirmeyin.
wp config get DB_NAME
wp config get DB_USER
wp config get DB_HOST
Parolayı ekrana basmadan temel bağlantı değerlerini gösterir.
systemctl status mariadb --no-pager || systemctl status mysql --no-pager
Veritabanı servisinin çalışıp çalışmadığını gösterir.
wp db check
WordPress yapılandırmasıyla bağlantı ve tablo durumunu kontrol eder.
df -h
df -i
MySQL’in yeni dosya oluşturmasını engelleyen doluluğu tespit eder.
mysqladmin processlist
Uzun sorguları ve bağlantı yoğunluğunu gösterir.
wp db tables --all-tables-with-prefix
wp config get table_prefix
WordPress’in beklediği tablo önekiyle gerçek tabloları karşılaştırır.
WordPress hatasının temel nedeni aynıdır ancak log yolları, PHP ayar ekranları ve servis yönetimi kullanılan barındırma altyapısına göre değişir.
cPanel’de MySQL Databases, phpMyAdmin ve Service Status ekranları kullanılır.
cd /home/KULLANICI/public_html && wp db checkPlesk’te Databases ekranı ve Repair Kit bağlantı sorununu ayırmaya yardımcı olur.
cd /var/www/vhosts/ALANADI/httpdocs && wp db checkPanelsiz sunucuda servis, socket, kullanıcı yetkisi ve WordPress yapılandırması birlikte doğrulanır.
mysqladmin ping && sudo -u www-data wp db check --path=/var/www/htmlÖnce servisin erişilebilirliğini doğrulayın; sonra wp-config bilgileri, yetkiler ve tablo sağlığını sırasıyla inceleyin.
Aynı sunucudaki diğer veritabanı kullanan siteleri ve MariaDB servisini kontrol edin.
systemctl is-active mariadb || systemctl is-active mysqlDisk/inode doluysa veya OOM yaşandıysa bağlantı bilgilerini değiştirmeden önce altyapıyı düzeltin.
df -h && df -iDB adı, kullanıcı ve host değerlerini gerçek veritabanı kaydıyla eşleştirin.
wp config get DB_NAMEKullanıcının yalnız sunucuya değil doğru veritabanına erişebildiğini kontrol edin.
wp db checkEksik veya bozuk tablolar için önce export alın, ardından check/repair uygulayın.
wp db export once-yedek.sqlBağlantı açıldıktan sonra yalnız ana sayfayı değil yazma işlemlerini de doğrulayın.
wp option get siteurlYeni veritabanı parolasını wp-config.php içinde güvenli biçimde güncelleyin.
wp config get DB_USERMariaDB servisi, disk, RAM ve son paket güncellemesi incelenir.
journalctl -u mariadb -n 100 --no-pagermax_connections, slow query, bot trafiği ve object cache bağlantıları kontrol edilir.
mysqladmin processlistVeritabanının içe aktarıldığını, adın prefix ile değişmediğini ve kullanıcı yetkisini doğrulayın.
wp db tablesYedek alın, kontrollü repair yapın ve WP_ALLOW_REPAIR sabitini kaldırın.
wp db repairYanlış wp-config bilgileri, kapalı MySQL/MariaDB servisi, kullanıcı yetkisi, disk doluluğu, bağlantı limiti veya bozuk tablolar neden olabilir.
Hayır. Hosting sağlayıcısı özel hostname, socket veya uzak veritabanı adresi kullanabilir.
Kısa süreli ve yedek sonrası kullanılmalıdır; giriş gerektirmeyen onarım ekranını açtığı için işlem sonrası kaldırılmalıdır.
Yeni parolayı wp-config.php içindeki DB_PASSWORD değerine de güvenli şekilde yazmalısınız.
Kullanıcı yetkisi, host eşleşmesi, yanlış veritabanı adı veya PHP’nin farklı socket kullanması olasıdır.
Hatanın kendisi silmez; fakat yanlış restore veya veri dosyalarına müdahale veri kaybına yol açabilir.
Redis/Memcached doğrudan MySQL yerine geçmez; ancak bağlantı ve timeout sorunları uygulama davranışını karmaşıklaştırabilir.
cPanel, WHM, CloudLinux, LiteSpeed, MariaDB, Exim ve güvenlik katmanlarını birlikte analiz ederek yalnızca servisi kaldırmak yerine arızanın temel nedenini gideriyoruz.