İçeriğe geç
Hatalar ve çökmeler

WordPress'te Veritabanı Bağlantı Hatası: Nasıl Çözülür

WordPress veritabanı bağlantı hatasını çözün: wp-config.php içindeki dört kimlik bilgisini kontrol edin, veritabanı sunucusunun ayakta olduğunu doğrulayın ve bozulmuş bir tabloyu onarın.

Yayınlandı

Sitenizi açıyorsunuz ve her sayfa — ön yüz de wp-admin de — tek bir gri cümleyle değişiyor: Veritabanı bağlantısı kurulurken hata oluştu. Hiçbir şey görüntülenmiyor, çünkü görüntülenemiyor. WordPress bir sayfa oluşturacak kadar bile ilerleyemedi.

İşi hızlıca çözmenizi sağlayan zihinsel model şu: WordPress tüm içeriğinizi — yazılar, sayfalar, ayarlar, kullanıcılar — dosyalarda değil bir MySQL veritabanında tutar. Her istekte wp-config.php dosyasından dört giriş bilgisini okur, o veritabanına bağlanır ve ihtiyacı olanı çeker. Bu hata, o bağlantının denendiği ve reddedildiği anlamına gelir. Çözüm, neden reddedildiğini bulmaktır ve yalnızca üç olasılık vardır.

Olasılık sırasına göre üç neden

  1. wp-config.php içindeki yanlış bir kimlik bilgisi — genellikle sunucu değiştirmenin sonucu.
  2. Veritabanı sunucusu kapalı ya da aşırı yüklü — genellikle sizin tarafınızda hiçbir şeyin değişmemesinin sonucu.
  3. Veritabanı bozuk — daha az rastlanır ve kendini farklı şekilde belli eder.

Bu sırayla ilerleyin.

Adım 1: dört kimlik bilgisini kontrol edin

Sitenizin kök dizinindeki wp-config.php dosyasını SFTP ya da hosting firmanızın dosya yöneticisiyle açın. Bağlantıyı dört satır tanımlar:

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

Bunların her biri, hosting firmanızın atadığı değerle bire bir eşleşmelidir. Hosting kontrol panelinizin veritabanı bölümünü açın (cPanel’de bu, “MySQL Databases” bölümüdür) ve karakter karakter karşılaştırın:

  • DB_NAME — hosting firmaları adın başına genellikle hesabınızı ekler, örneğin cpaneluser_wpdb. Bu önek, adın bir parçasıdır.
  • DB_USER — aynı önek kuralı geçerlidir ve kullanıcının yalnızca var olması yetmez, o veritabanına atanmış olması gerekir.
  • DB_PASSWORD — açık ara en yaygın suçlu. Emin değilseniz kontrol panelinden sıfırlayıp yeni değeri yapıştırın. Sonda kalan bir boşluğa ya da akıllı tırnağa dikkat edin.
  • DB_HOSTlocalhost olduğunu varsaymayın. Birçok hosting firması mysql.yourhost.com gibi bir adrese, bazen de bir :port ekine sahip özel bir veritabanı sunucusu kullanır. Doğru değeri kontrol paneli gösterir.

Bu dört değer tam olarak bu dosyada durduğundan, temiz ve tırnakları doğru yerleştirilmiş bir wp-config.php dosyasını yeniden oluşturmanın en güvenli yolu wp-config.php oluşturucudur — dört veritabanı alanını doldurun ve sonucu eski bloğun üzerine yapıştırın.

Bu adım tek başına, neredeyse her taşımadan sonra hatayı çözer; çünkü eski sunucuda doğru olan kimlik bilgileri yeni sunucuda yanlıştır.

Adım 2: veritabanı sunucusunun gerçekten ayakta olduğunu doğrulayın

Kimlik bilgileri doğruysa ve hata sürüyorsa — özellikle de sizin tarafınızda hiçbir değişiklik olmadan kendiliğinden ortaya çıktıysa — şüpheli, veritabanı sunucusunun kendisidir.

Paylaşımlı hostingde bu yaygındır ve genellikle geçicidir: MySQL servisi bir trafik yoğunluğunda boğulur ya da hesap başına bağlantı limitine takılır ve yeni bağlantıları reddetmeye başlar. Tipik olarak birkaç dakika içinde toparlanır. Sert bir şey yapmadan önce kısa bir süre bekleyip yeniden yükleyin.

Kimlik bilgilerinin WordPress’ten bağımsız olarak geçerli olup olmadığını test etmek için wp-config.php dosyasının yanına küçük bir betik bırakın:

<?php
$link = mysqli_connect('localhost', 'your_database_user', 'your_database_password');
if (!$link) {
    die('Connection failed: ' . mysqli_connect_error());
}
echo 'Connected — the server and credentials are fine.';

Gerçek DB_HOST, DB_USER ve DB_PASSWORD değerlerinizi kullanın. Connected yazdırırsa giriş bilgileriniz çalışıyordur ve sorun başka yerdedir (bozuk bir veritabanı, Adım 3). Bir bağlantı hatası yazdırırsa mesaj hangisi olduğunu söyler: “Access denied” yanlış kullanıcı ya da parola demektir; “Can’t connect to MySQL server” yanlış sunucu ya da gerçekten kapalı bir servis demektir — hosting firmanızla iletişime geçme zamanı. İşiniz biter bitmez betiği silin.

Adım 3: bozulmuş bir veritabanını onarın

Bozulmayı bir bağlantı sorunundan ayıran tek bir ipucu var: ön yüz yükleniyor ama wp-admin hatayı gösteriyor ya da tam tersi. Bağlantı gerçekten reddedilmiş olsaydı ikisi de ölü olurdu. Bunun gibi bir ayrışma, hasarlı tablolara işaret eder.

WordPress’in yerleşik bir onarım aracı var. wp-config.php dosyasına, “düzenlemeyi burada bırakın” yorumunun üstüne bir satır ekleyin:

define( 'WP_ALLOW_REPAIR', true );

Ardından bu URL’yi doğrudan tarayıcınızda açın:

https://yoursite.com/wp-admin/maint/repair.php

Giriş yapmadan yüklenir — kilitli kalmış olabileceğiniz için olayın özü budur — ve “Repair Database” ile “Repair and Optimize Database” seçeneklerini sunar. Çalıştırın.

Sonra o satırı wp-config.php dosyasından hemen silin. O satır durduğu sürece internetteki herkes bu URL’ye ulaşıp veritabanınızda bir onarım çalıştırabilir. Bu, isteğe bağlı bir temizlik değildir; az önce açtığınız bir açığı kapatmaktır.

Adım 4: onarım bile bağlanamadığında

Onarım sayfasının kendisi bağlantı hatasını gösteriyorsa onarılacak bir şey yoktur — veritabanına hiç ulaşılamıyordur, dolayısıyla Adım 1 ya da Adım 2’ye dönmüş olursunuz. Bu noktada güvenilir hamle, veritabanını hosting firmanızın en güncel yedeğinden geri yüklemektir. Çoğu kontrol paneli otomatik günlük veritabanı anlık görüntüleri tutar; dün geceden bir geri yükleme, bağlanamadığınız bir bozulmayı kovalamaktan neredeyse her zaman daha hızlı ve güvenlidir.

Gönül rahatlığıyla göz ardı edebileceğiniz tavsiyeler

“WordPress’i yeniden kur yeter.” Bu hata, çekirdek dosyalarla değil veritabanı bağlantısıyla ilgilidir. Yeniden kurmak, gayet iyi çalışan dosyaları değiştirir ve bozuk olan hiçbir şeye dokunmaz.

“PHP bellek limitini artır.” Bellek tükenmesi, farklı bir mesajı olan başka bir hatadır. Limiti yükseltmek, reddedilen bir veritabanı bağlantısı için hiçbir işe yaramaz ve yalnızca kimlik bilgilerini hiç kontrol etmediğinizi gizler.

“Önbelleği temizle.” Hata, herhangi bir önbellek bir sayfa sunabilecek duruma gelmeden PHP içinde gerçekleşir. Bağlantı reddedilirken önbelleği temizlemek hiçbir şeyi değiştirmez; yalnızca site geri geldikten sonra yapmaya değer.

“Düzeltmek için veritabanını doğrudan düzenle.” Bağlantının çalıştığını bile doğrulamadan tabloları elle düzenlemek için phpMyAdmin’e sarılmak, geçici bir kesintinin kalıcı veri kaybına dönüşme yoludur. Önce bağlantıyı doğrulayın; verilere en son ve yalnızca bir yedekten dokunun.

Hâlâ takıldınız mı?

Kimlik bilgileri test betiğiyle doğrulanıyor, sunucu ayakta, onarım bağlanıp hata bildirmiyor ama site hâlâ mesajı gösteriyorsa, geriye kalan şüpheli, veritabanıyla kendi bağlantısı üzerinden konuşan bir eklentidir — eski bir sunucu adresini saklamış bir önbellekleme ya da veritabanı eklentisi. Bunu elemek için wp-content/plugins klasörünü SFTP üzerinden plugins-off olarak yeniden adlandırın. Hata kaybolursa, geri gelene kadar eklentileri teker teker yeniden ekleyin.

FAQ

Sorular

WordPress'te veritabanı bağlantı hatası ne anlama gelir?

WordPress yüklendi, wp-config.php dosyasını okudu, orada bulduğu kimlik bilgileriyle MySQL veritabanınıza bağlanmayı denedi ve reddedildi anlamına gelir. Hata, herhangi bir sayfa oluşturulmadan önce meydana gelir; sitenin tamamının tek satırlık boş bir metne dönmesinin nedeni budur. Ya bir kimlik bilgisi yanlıştır, ya veritabanı sunucusu kapalı veya aşırı yüklüdür, ya da veritabanının kendisi bozuktur.

WordPress veritabanı girişini hangi dosya tutar?

Sitenizin kök dizininde, wp-load.php dosyasının yanındaki wp-config.php. Bağlantıyı dört sabit tanımlar: DB_NAME, DB_USER, DB_PASSWORD ve DB_HOST. Bunlardan herhangi birindeki tek bir yanlış karakter tam olarak bu hatayı üretir ve bu değerlerin güncelliğini yitirmesinin en yaygın yolu sunucu taşımalarıdır.

Hiçbir şeyi değiştirmediğim halde hata neden ortaya çıktı?

Neredeyse her zaman sitenizden değil, veritabanı sunucusundan kaynaklanır. Paylaşımlı hostingde MySQL servisi trafik yoğunluğunda aşırı yüklenir ya da bağlantı limitine takılır ve yeni bağlantıları reddeder. Genelde birkaç dakika içinde kendiliğinden düzelir. Sürekli tekrar ediyorsa sorulacak yer hosting firmanızdır ya da paketinizi büyütmenizin zamanı gelmiştir.

DB_HOST her zaman localhost mudur?

Hayır ve öyle olduğunu varsaymak birçok taşımadan sonra bu hataya yol açar. Pek çok hosting firması veritabanını ayrı bir sunucuda çalıştırır, dolayısıyla DB_HOST, mysql.yourhost.com gibi bir adres ya da port içeren bir IP olur. Hosting kontrol panelinizin veritabanı bölümü doğru değeri gösterir. Varsa :port ekiyle birlikte tam olarak kopyalayın.

Bozulmuş bir WordPress veritabanını nasıl onarırım?

wp-config.php dosyasına define( 'WP_ALLOW_REPAIR', true ); satırını ekleyin, ardından tarayıcıda yoursite.com/wp-admin/maint/repair.php adresini açıp onarımı çalıştırın. Giriş gerektirmez; işiniz biter bitmez o satırı silmeniz gerekmesinin nedeni tam olarak budur — bırakırsanız herkes bir onarım tetikleyebilir. Hiç bağlanamıyorsa sorun bozulma değil, kimlik bilgileri ya da sunucudur.

Neden yalnızca wp-admin hata veriyor da ön yüz yükleniyor?

Bu ayrışma, bir bağlantı sorunundan çok bozuk bir veritabanına işaret eder, çünkü bağlantı ön yüz için açıkça çalışıyor. WordPress bazen yönetici tarafını ayrıca işaretler. Önce yerleşik veritabanı onarımını çalıştırın; bu çözmezse veritabanını hosting firmanızın en güncel yedeğinden geri yükleyin.