MySQL bağlantı hatası alan sitelerde veritabanı bilgileri, sunucu durumu, kaynak limitleri ve log kayıtları üzerinden hızlı kontrol yapmanız için pratik rehber.
Bir web sitesinde “Error establishing a database connection”, “MySQL bağlantısı kurulamadı” veya benzeri bir uyarı göründüğünde sorun çoğu zaman tek bir nedenden kaynaklanmaz. Yanlış veritabanı bilgileri, dolu kaynaklar, durmuş MySQL servisi ya da uygulama tarafındaki hatalı yapılandırma aynı sonucu doğurabilir. Bu nedenle panikleyip rastgele değişiklik yapmak yerine, kontrollü bir kontrol sırası izlemek kesintiyi daha hızlı ve güvenli şekilde gidermeyi sağlar.
İlk adım, hatanın yalnızca belirli bir sayfada mı yoksa tüm sitede mi görüldüğünü anlamaktır. Ana sayfa, yönetim paneli ve birkaç alt sayfa ayrı ayrı kontrol edilmelidir. WordPress kullanıyorsanız yönetim paneline erişim varken ön yüzde hata almanız, eklenti veya tema kaynaklı bir soruna işaret edebilir. Hem ön yüz hem panel açılmıyorsa veritabanı bağlantı bilgileri, sunucu durumu veya MySQL servisi daha öncelikli incelenmelidir.
Aynı sunucuda çalışan başka siteler varsa onların durumunu da kontrol edin. Birden fazla sitede aynı anda hata varsa problem büyük olasılıkla uygulama dosyalarından değil, hosting kaynakları, MySQL servisi veya genel sunucu yapılandırması ile ilgilidir.
MySQL bağlantı hatalarında en sık karşılaşılan nedenlerden biri hatalı veritabanı adı, kullanıcı adı, parola veya sunucu adresidir. WordPress sitelerde bu bilgiler genellikle wp-config.php dosyasında yer alır. Yakın zamanda taşıma, yedek geri yükleme, parola değişikliği veya yeni kullanıcı oluşturma işlemi yapıldıysa bu alanlar özellikle incelenmelidir.
Aşağıdaki değerlerin kontrol panelindeki veritabanı bilgileriyle birebir aynı olması gerekir. Büyük-küçük harf farkı, fazladan boşluk veya eski parola bağlantıyı engelleyebilir.
define('DB_NAME', 'veritabani_adi');
define('DB_USER', 'veritabani_kullanicisi');
define('DB_PASSWORD', 'veritabani_sifresi');
define('DB_HOST', 'localhost');
Birçok paylaşımlı sunucuda DB_HOST değeri “localhost” olur; ancak bazı altyapılarda özel bir MySQL sunucu adresi kullanılır. Taşıma sonrası eski sunucudaki DB_HOST değerinin yeni ortamda geçerli olduğunu varsaymak yaygın bir hatadır.
Bağlantı bilgileri doğruysa sıradaki kontrol MySQL servisidir. Yönetim panelinde veritabanı yönetim aracına, örneğin phpMyAdmin’e erişmeyi deneyin. phpMyAdmin açılmıyor, çok yavaş yanıt veriyor veya bağlantı hatası gösteriyorsa sorun site dosyalarından bağımsız olabilir.
VPS veya özel sunucu kullanıyorsanız MySQL/MariaDB servis durumunu kontrol etmek gerekir. Servis durmuşsa yeniden başlatmak geçici çözüm sağlayabilir; ancak neden durduğunu log kayıtlarından incelemeden bırakmak aynı hatanın tekrarlamasına yol açar. Disk doluluğu, bellek yetersizliği ve ani trafik artışı servis kesintilerinde sık görülen nedenlerdir.
Yoğun trafik, hatalı bot istekleri, ağır sorgular veya optimize edilmemiş eklentiler veritabanı bağlantı limitlerini tüketebilir. Böyle bir durumda site bazen açılır, bazen aynı hatayı verir. Bu dalgalı yapı, klasik yanlış parola probleminden farklıdır ve kaynak kullanım raporlarıyla değerlendirilmelidir.
Kontrol panelinde CPU, RAM, I/O, entry process ve MySQL bağlantı sayısı gibi metrikleri inceleyin. Limitlere sık sık ulaşılıyorsa yalnızca paketi yükseltmek yerine hangi işlem veya sorgunun yük oluşturduğunu anlamak daha doğru bir yaklaşımdır. Kalıcı çözüm; önbellekleme, sorgu optimizasyonu, gereksiz eklentilerin kaldırılması ve uygun hosting planının seçilmesiyle birlikte düşünülmelidir.
Veritabanı kullanıcısı mevcut olsa bile gerekli izinlere sahip olmayabilir. Taşıma, manuel kullanıcı oluşturma veya güvenlik amacıyla yetki kısıtlama işlemleri sonrasında SELECT, INSERT, UPDATE, DELETE gibi temel yetkiler eksik kalabilir. WordPress gibi dinamik sistemlerde bu yetkiler eksik olduğunda bağlantı kurulsa bile yazma veya okuma işlemlerinde hata oluşabilir.
Kontrol panelinden ilgili veritabanı kullanıcısının doğru veritabanına atanmış olduğundan emin olun. Kullanıcı adı benzer görünen farklı bir veritabanına bağlıysa hata tespiti zorlaşır. Özellikle birden fazla proje barındıran sunucularda isimlendirme standardı kullanmak bu karışıklığı azaltır.
Site taşıma işlemlerinde dosyaların eksiksiz aktarılması tek başına yeterli değildir. Veritabanı içe aktarımı tamamlanmamışsa, tablo önekleri değişmişse veya yapılandırma dosyası eski ortamı gösteriyorsa bağlantı hatası alınabilir. Ayrıca bazı yedek araçları veritabanını parçalara ayırarak geri yükler; işlem yarıda kalırsa tablo eksikleri oluşabilir.
WordPress için tablo öneki wp-config.php içindeki $table_prefix değeriyle veritabanındaki tablo adları uyumlu olmalıdır. Örneğin dosyada “wp_” yazarken veritabanında tablolar “abc_” ile başlıyorsa site doğru tablolara erişemez.
Hatanın kaynağını anlamanın en güvenilir yolu log kayıtlarını incelemektir. PHP error log, web sunucu logları ve MySQL hata kayıtları sorunun zamanını, ilgili dosyayı veya bağlantı limitini gösterebilir. “Access denied”, “Too many connections”, “Unknown database” veya “Can’t connect to local MySQL server” gibi ifadeler doğrudan kontrol edilmesi gereken alanı işaret eder.
Loglarda görülen hata mesajını değiştirmeden not almak önemlidir. Destek ekibine başvurmanız gerektiğinde bu mesaj, sorunun nasıl ilerletileceğini hızlandırır. Ekran görüntüsü, hata zamanı ve son yapılan değişiklik bilgisiyle birlikte iletilen talepler genellikle daha kısa sürede çözümlenir.
Bağlantı hatasını çözmeye çalışırken yapılandırma dosyalarını rastgele düzenlemek, çalışan ayarların da bozulmasına neden olabilir. Değişiklikten önce dosyanın yedeğini alın, yalnızca tek bir alanı değiştirin ve sonucu test edin. Birden fazla değişikliği aynı anda yapmak, hangi adımın işe yaradığını anlamayı zorlaştırır.
Sorun sık tekrarlıyorsa bunu yalnızca anlık kesinti olarak değerlendirmeyin. Veritabanı bağlantı hataları; kapasite planlaması, uygulama optimizasyonu, güvenlik ve sunucu yönetimi açısından erken uyarı niteliği taşıyabilir. Düzenli yedekleme, izleme araçları ve doğru yapılandırılmış bir sunucu ortamı, aynı problemin kritik saatlerde yeniden yaşanmasını önler.