Veritabanı bağlantı hatasını çözme

WordPress veya PHP uygulamalarında veritabanı bağlantı hatasıyla mı karşılaştınız? Bu makalede, 7 ana nedeni ve gerçek komutlarla doğru inceleme sırasını öğreneceksiniz.

6 dk Güncellendi 6 Aug 2026

Veritabanı Bağlantı Hatası: Web Siteniz Neden Aniden Erişilemez Olur?

Her site yöneticisi için en korkutucu anlardan biri, veritabanı bağlantı hatası (Database Connection Error) mesajını görmektir. Bu hata genellikle aniden ortaya çıkar ve tüm siteye erişimi engeller. WordPress'te bu hata genellikle "Error Establishing a Database Connection" mesajıyla birlikte gelir, ancak özel PHP uygulamalarında "PDOException: SQLSTATE[HY000] [2002]" veya "mysqli::connect(): (HY000/2002)" gibi farklı hatalar görebilirsiniz.

İyi haber şu ki, çoğu durumda bu hata giderilebilir ve paniğe gerek yoktur. Bu makalede, veritabanı bağlantı hatasının yedi yaygın nedenini öncelik sırasına göre inceleyecek ve her biri için gerçek komutlarla pratik çözümler sunacağız. Bu sıralama, pratik deneyime ve her sorunun olasılığına göre tasarlanmıştır.

ServerNet gibi profesyonel web barındırma hizmetleri kullanıyorsanız, bu hatayı gidermek için genellikle izleme araçları ve teknik destek mevcuttur. Ancak sorun giderme ilkelerini bilmek, sorunu en kısa sürede çözmenize yardımcı olur.

Birinci Neden: Yapılandırma Dosyasında Yanlış Bağlantı Bilgileri

Veritabanı bağlantı hatasının en yaygın nedeni, bağlantı bilgilerindeki hatadır. WordPress'te bu bilgiler wp-config.php dosyasında saklanır. Diğer PHP uygulamalarında genellikle config.php, .env veya database.php gibi dosyalar bu ayarlardan sorumludur.

WordPress'te wp-config.php Dosyasını Kontrol Etme

wp-config.php dosyasını bir metin düzenleyiciyle açın ve şu dört satırı kontrol edin:

define('DB_NAME', 'your_database_name');
define('DB_USER', 'your_database_user');
define('DB_PASSWORD', 'your_database_password');
define('DB_HOST', 'localhost');

Yaygın hatalar:

  • DB_HOST: Veritabanı ayrı bir sunucudaysa, değer veritabanı sunucusunun IP'si veya alan adı olmalıdır (örneğin 192.168.1.100 veya db.example.com). Bu durumda localhost kullanmak hataya neden olur.
  • DB_PASSWORD: Parola, PHP dizgisinde doğru yorumlanmayan özel karakterler içerebilir. Parola ' (kesme işareti) içeriyorsa, \' ile kaçış karakteri ekleyin.
  • DB_NAME: Veritabanı adı, MySQL'de oluşturulan adla tam olarak eşleşmelidir. Linux'ta veritabanı adlarında büyük/küçük harf duyarlılığı vardır.

Sorun giderme ipucu: Site kökünde test-db.php adlı basit bir PHP dosyası oluşturun ve içine aşağıdaki kodu ekleyin:

<?php
$link = mysqli_connect('localhost', 'your_user', 'your_password', 'your_database');
if (!$link) {
    die('Hata: ' . mysqli_connect_error());
}
echo 'Bağlantı başarılı';
mysqli_close($link);
?>

Ardından bu dosyayı tarayıcıda açın. Hata gösteriyorsa, sorunun hangi kısımdan kaynaklandığını tam olarak görebilirsiniz.

İkinci Neden: Veritabanının Bozulması veya Silinmesi

Bazen veritabanı çeşitli nedenlerle bozulur veya yanlışlıkla silinir. Bu soruna genellikle farklı hatalar eşlik eder.

Veritabanı ve Tabloların Varlığını Kontrol Etme

SSH veya cPanel üzerinden sunucuya bağlanın ve aşağıdaki komutla MySQL'e girin:

mysql -u root -p

Ardından mevcut veritabanlarını listeleyin:

SHOW DATABASES;

Veritabanınız listede yoksa, yeniden oluşturmanız gerekir. Veritabanı mevcutsa ancak tablolar bozuksa, onarmak için aşağıdaki komutu kullanın:

mysqlcheck -u root -p --auto-repair --all-databases

Yaygın hata: Birçok kullanıcı, veritabanının phpMyAdmin'de görüntülenmesinin sağlıklı olduğu anlamına geldiğini düşünür. Ancak bazen veritabanının iç tabloları (WordPress'te wp_options gibi) bozulur ve bağlantı hatasına neden olur. Kontrol için her zaman mysqlcheck komutunu kullanın.

Üçüncü Neden: Sunucu Kaynak Sınırlamaları (MySQL'in Çökmesi)

Veritabanı bağlantı hatasının gizli nedenlerinden biri, MySQL'in aşırı kaynak tüketimidir. Sunucunun belleği veya CPU'su maksimuma ulaştığında, MySQL hizmeti otomatik olarak durabilir.

MySQL Hizmet Durumunu Kontrol Etme

Linux sunucularda, MySQL durumunu aşağıdaki komutla kontrol edin:

systemctl status mysql

Hizmet etkin değilse, başlatın:

systemctl start mysql

MySQL hata günlüklerini kontrol etmek için aşağıdaki komutu kullanın:

tail -100 /var/log/mysql/error.log

Bu günlükte genellikle kaynak sınırlamasını gösteren "Out of memory" veya "Too many connections" gibi hatalar görülür.

Geçici çözüm: Sunucunuzda yeterli RAM yoksa, MySQL parametrelerini /etc/mysql/my.cnf dosyasında ayarlayabilirsiniz. Örneğin, max_connections değerini azaltın:

[mysqld]
max_connections = 50
innodb_buffer_pool_size = 256M

Değişiklikten sonra hizmeti yeniden başlatın.

Dördüncü Neden: Güvenlik Duvarı veya IP Kısıtlaması

Veritabanı ayrı bir sunucudaysa (örneğin, özel bir veritabanı sunucusu), veritabanı sunucusunun güvenlik duvarı web sunucunuzun IP'sinden gelen bağlantıyı engelliyor olabilir.

Uzaktan Erişimi Kontrol Etme

Web sunucusundan, MySQL portuna (varsayılan 3306) bağlantıyı aşağıdaki komutla test edin:

telnet your-db-server-ip 3306

Bağlantı kurulamazsa, güvenlik duvarı veya ağ ayarlarında sorun var demektir. Veritabanı sunucusunda, iptables kurallarını aşağıdaki komutla kontrol edin:

iptables -L -n | grep 3306

Ayrıca MySQL'de, veritabanı kullanıcısının web sunucusunun IP'sinden bağlanma iznine sahip olması gerekir. MySQL'de aşağıdaki komutla kontrol edin:

SELECT host, user FROM mysql.user WHERE user = 'your_user';

host değeri yalnızca localhost ise, web sunucusunun IP'sine veya % (tüm IP'ler için) olarak değiştirin:

GRANT ALL PRIVILEGES ON your_database.* TO 'your_user'@'your-web-server-ip' IDENTIFIED BY 'your_password';
FLUSH PRIVILEGES;

Yaygın hata: Tüm IP'ler için % kullanmak güvenliği azaltır. Web sunucusunun IP'sini tam olarak belirtmek daha iyidir.

Beşinci Neden: WordPress veya Uygulama Dosyalarının Bozulması

Bazen WordPress veya PHP uygulamasının temel dosyaları bozulur ve veritabanı bağlantı hatasına neden olur. Bu sorun genellikle eksik güncelleme veya hack saldırısından sonra ortaya çıkar.

wp-config.php Dosyasını Sıfırlama

WordPress'te, wp-config.php dosyası bozulmuşsa, temiz bir sürümle değiştirebilirsiniz. Önce mevcut dosyayı yedekleyin:

cp wp-config.php wp-config.php.backup

Ardından örnekten yeni bir dosya oluşturun:

cp wp-config-sample.php wp-config.php

Şimdi yeni dosyaya doğru veritabanı bilgilerini girin.

Diğer PHP uygulamaları için, yapılandırma dosyalarını orijinal sürümle (genellikle git deposunda veya kurulum paketinde) karşılaştırın.

Altıncı Neden: DNS veya Veritabanı Hostname Sorunu

Bağlantı ayarlarında hostname (örneğin db.example.com) kullanıyorsanız, DNS doğru şekilde çözümlenmeyebilir.

DNS Çözümlemesini Test Etme

Web sunucusundan, hostname'i IP'ye dönüştürmek için aşağıdaki komutu kullanın:

nslookup db.example.com

Doğru bir yanıt alamazsanız, /etc/hosts dosyasına manuel bir eşleme ekleyin:

192.168.1.100 db.example.com

Ardından bağlantıyı tekrar test edin.

Yedinci Neden: Uyumsuz PHP veya MySQL Sürümü

Bazen PHP veya MySQL güncellemesinden sonra sürümler birbiriyle uyumlu olmaz. Örneğin, WordPress 5.0, PHP 8.0 ile iyi çalışır, ancak bazı eski eklentiler yeni PHP sürümüyle sorun yaşayabilir.

Sürümleri Kontrol Etme

PHP sürümünü aşağıdaki komutla kontrol edin:

php -v

MySQL sürümünü:

mysql --version

Uygulamanızın bu sürümleri desteklediğinden emin olun. WordPress için en az PHP 7.4 ve MySQL 5.6 gereklidir.

Önemli not: MySQL 8 kullanıyorsanız, eski WordPress eklentileri yeni MySQL kimlik doğrulama yöntemiyle (caching_sha2_password) sorun yaşayabilir. Bu durumda, veritabanı kullanıcısını eski yönteme değiştirin:

ALTER USER 'your_user'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';
FLUSH PRIVILEGES;

Nihai Kontrol Sırası (Checklist)

Veritabanı bağlantı hatasını hızlıca gidermek için şu sırayı izleyin:

  1. Yapılandırma dosyasını (wp-config.php veya eşdeğeri) kontrol edin.
  2. MySQL hizmet durumunu systemctl status mysql ile kontrol edin.
  3. Manuel bağlantıyı mysql -u user -p ile test edin.
  4. Veritabanı ve tabloların varlığını SHOW DATABASES; ve mysqlcheck ile kontrol edin.
  5. Güvenlik duvarını ve IP erişimini telnet ile test edin.
  6. MySQL hata günlüklerini /var/log/mysql/error.log dosyasında okuyun.
  7. Gerekirse MySQL hizmetini yeniden başlatın.

Bu adımları izleyerek vakaların %90'ında sorun çözülür. Hata devam ederse, muhtemelen sorun sunucu donanımından veya teknik ekip tarafından incelenmesi gereken daha gelişmiş ayarlardan kaynaklanıyordur.

Bu sayfa yardımcı oldu mu?