WordPress Yönetici Parolanızı Manuel Olarak Nasıl Sıfırlarsınız
WordPress yönetici hesabınıza erişimi kaybetmek, sitenizin kontrolünü kaybetmek anlamına gelmek zorunda değildir. Standart “Şifrenizi mi unuttunuz?” e-posta akışı bozuksa — yanlış yapılandırılmış posta ayarları, erişilemeyen bir e-posta adresi veya bozuk bir kullanıcı kaydı nedeniyle — şifreyi doğrudan veritabanı, dosya sistemi veya kabuk düzeyinde sıfırlayarak bu adımı tamamen atlayabilirsiniz.
Bu kılavuz dört savaşta test edilmiş yöntemi kapsamaktadır: phpMyAdmin, functions.php aracılığıyla FTP, SSH üzerinden WP-CLI ve WordPress Acil Durum Şifre Sıfırlama Betiği. Her yöntem, tam adımlar, güvenlik uyarıları ve doğru seçim olduğu belirli senaryolarla açıklanmaktadır.
Standart Sıfırlama Akışı Başarısız Olduğunda
Manuel bir yönteme başvurmadan önce, yerleşik sıfırlamanın neden bozulduğunu anlayın. En yaygın nedenler şunlardır:
- Bozuk WordPress posta teslimi —
wp_mail(), PHP’ninmail()işlevine veya bir SMTP eklentisine bağlıdır. Hiçbiri yapılandırılmamışsa, sıfırlama e-postası sessizce düşürülür. - Kayıtlı e-posta gelen kutusuna erişim yok — hesap, artık kullanılmayan bir adresle oluşturulmuştu.
- Bozuk
wp_userstablosu — nadir, ancak başarısız bir geçiş veya eklenti çakışmasından sonra mümkündür. - wp-admin’den tamamen kilitlenme — kaba kuvvet koruma eklentileri (Wordfence, Limit Login Attempts), sıfırlama uç noktasının kendisini engelleyebilir.
Temel nedeni belirlemek önemlidir çünkü bazı yöntemler (WP-CLI, phpMyAdmin) posta sistemine hiç dokunmadan şifreyi düzeltirken, diğerleri (acil durum betiği) siteye HTTP erişimi gerektirir.
Yöntem 1: phpMyAdmin Aracılığıyla Şifreyi Sıfırlama
En uygun olduğu durum: SSH’nin kullanılamadığı ancak cPanel veya benzer bir kontrol panelinin erişilebilir olduğu paylaşımlı barındırma ortamları.
phpMyAdmin, tüm WordPress kullanıcı kimlik bilgilerini depolayan MySQL veya MariaDB veritabanına doğrudan okuma/yazma erişimi sağlar. Şifreler bcrypt karmaları (WordPress 6.x+) veya MD5 karmaları (eski kurulumlar) olarak depolanır. phpMyAdmin’in yerleşik işlev seçici, karmalamayı otomatik olarak gerçekleştirir.
Adım 1: Kontrol Panelinizden phpMyAdmin’i Açın
Barındırma kontrol panelinize — cPanel, DirectAdmin veya özel bir panel — giriş yapın. Veritabanları bölümünü bulun ve phpMyAdmin‘e tıklayın. cPanel’li bir VPS kullanıyorsanız, yol genellikle cPanel > Veritabanları > phpMyAdmin şeklindedir.
Adım 2: WordPress Veritabanını Seçin
Sol taraftaki kenar çubuğunda, WordPress kurulumunuzla ilişkili veritabanı adına tıklayın. Hangi veritabanının doğru olduğundan emin değilseniz, sitenizin kök dizinindeki wp-config.php dosyasını açın ve DB_NAME sabitini arayın.
Adım 3: wp_users Tablosunu Açın
Veritabanı tablolarını genişletin ve wp_users üzerine tıklayın. Kurulumunuz özel bir tablo öneki kullanıyorsa (wp-config.php içindeki $table_prefix tarafından tanımlanır), tablo <prefix>_users olarak adlandırılacaktır — örneğin, site7_users.
Adım 4: Yönetici Kullanıcı Satırını Düzenleyin
user_logindeğerinin yönetici kullanıcı adınızla eşleştiği satırı bulun. Çoğu varsayılan kurulumda bu,ID = 1olan satırdır.- Düzenle‘ye (kalem simgesi) tıklayın.
user_passalanını bulun.user_passyanındaki İşlev açılır menüsünde MD5‘i seçin.- Değer alanına yeni şifrenizi düz metin olarak yazın.
- Aşağı kaydırın ve Git‘e tıklayın.
Önemli teknik not: Burada MD5’i seçmek, anında giriş için yeterlidir çünkü WordPress, girişte eski MD5 kontrolü gerçekleştirir ve ardından başarılı kimlik doğrulamasında şifreyi daha güçlü phpass veya bcrypt algoritmasını kullanarak otomatik olarak yeniden karmalar. Bir bcrypt karmasını manuel olarak oluşturmanız gerekmez.
Adım 5: Değişikliği Doğrulayın
WordPress giriş sayfanıza gidin ve yeni şifreyle oturum açın. Giriş başarılı olursa, WordPress veritabanındaki karmayı sessizce mevcut algoritmaya yükseltecektir.
Yöntem 2: functions.php Dosyasını Değiştirerek FTP Aracılığıyla Şifreyi Sıfırlama
En uygun olduğu durum: phpMyAdmin’in kullanılamadığı ancak FTP/SFTP kimlik bilgilerinin erişilebilir olduğu durumlar.
Bu yöntem, aktif temanın functions.php dosyasına geçici olarak kod ekleyerek WordPress’in yürütme döngüsüne doğrudan bir şifre sıfırlama çağrısı enjekte eder.
Adım 1: FTP Aracılığıyla Bağlanın
FileZilla veya Cyberduck gibi bir FTP istemcisi kullanın. FTP ana bilgisayarınızı, kullanıcı adınızı, şifrenizi ve portu girin (düz FTP için 21, SFTP için 22 — mevcut olduğunda her zaman SFTP’yi tercih edin). Şuraya gidin:
/public_html/wp-content/themes/<your-active-theme>/wp-admin’e giriş yapmadan hangi temanın aktif olduğunu doğrulamak için, phpMyAdmin’deki wp_options tablosunda template seçenek anahtarını kontrol edin.
Adım 2: functions.php Dosyasını İndirin ve Düzenleyin
functions.php dosyasını yerel makinenize indirin. Bir kod düzenleyicide açın (VS Code, Sublime Text veya BOM olmadan UTF-8 kodlamasını koruyan herhangi bir düzenleyici). Dosyanın en altına aşağıdaki satırı ekleyin:
<?php
// Temporary password reset — REMOVE IMMEDIATELY AFTER USE
add_action( 'init', function() {
wp_set_password( 'YourNewSecurePassword123!', 1 );
});'YourNewSecurePassword123!' kısmını seçtiğiniz şifreyle değiştirin. İkinci argüman (1) kullanıcı kimliğidir. Yönetici hesabınız ID 1 değilse, doğru kimliği onaylamak için önce wp_users tablosunu sorgulayın.
Çağrıyı add_action( 'init', ... ) içine sarmak, wp_set_password() işlevini doğrudan dosyanın üst düzeyinde çağırmaktan daha güvenlidir; çünkü yürütmeden önce WordPress çekirdek işlevlerinin tamamen yüklendiğini garanti eder.
Adım 3: Yükleyin ve Giriş Yapın
Dosyayı kaydedin ve orijinalin üzerine yazarak sunucuya geri yükleyin. init kancasını tetiklemek ve şifre değişikliğini yürütmek için WordPress sitenizin herhangi bir sayfasını (ana sayfa bile olsa) yükleyin. Ardından /wp-login.php adresine gidin ve yeni şifreyle giriş yapın.
Adım 4: Kodu Hemen Kaldırın
Bu adım zorunludur. Sıfırlama kodunu functions.php içinde bırakmak, her sayfa yüklemesinin şifreyi sabit kodlanmış değere sıfırlaması anlamına gelir ve bu kritik bir güvenlik açığı oluşturur. functions.php dosyasını tekrar indirin, eklediğiniz satırları silin ve yeniden yükleyin.
Yöntem 3: WP-CLI Aracılığıyla Şifreyi Sıfırlama (SSH Komut Satırı)
En uygun olduğu durum: VPS veya özel sunucuya SSH erişimi olan geliştiriciler ve sistem yöneticileri. Bu en hızlı ve en temiz yöntemdir.
WP-CLI, WordPress için resmi komut satırı arayüzüdür. Bir tarayıcıya dokunmadan kullanıcıları, eklentileri, temaları ve veritabanı işlemlerini yönetebilir. VPS Hosting planında veya Dedicated Server üzerinde WordPress çalıştırıyorsanız, WP-CLI neredeyse kesinlikle mevcut veya kolayca kurulabilir durumdadır.
Adım 1: WP-CLI’nin Kurulu Olduğunu Doğrulayın
wp --infoKomut bulunamazsa, kurun:
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wpAdım 2: WordPress Kök Dizinine Gidin
cd /var/www/htmlYolu gerçek belge köküyle eşleşecek şekilde ayarlayın. wp-config.php dosyasını kontrol ederek doğru dizinde olduğunuzu doğrulayabilirsiniz:
ls wp-config.phpAdım 3: Şifreyi Sıfırlayın
wp user update 1 --user_pass="YourNewSecurePassword123!" --allow-root--allow-root bayrağı, komutu root kullanıcısı olarak çalıştırıyorsanız gereklidir. Gerekirse 1 kısmını gerçek kullanıcı kimliğiyle değiştirin. Önce doğru kimliği aramak için:
wp user list --fields=ID,user_login,user_email --allow-rootAdım 4: Güncellemeyi Onaylayın
WP-CLI tamamlandığında Success: Updated user 1. çıktısını verecektir. Değişikliği hemen doğrulayabilirsiniz:
wp user get 1 --field=user_pass --allow-rootBu, kaydın güncellendiğini doğrulayan yeni bcrypt karmasını döndürür. İşlemi tamamlamak için wp-admin’e giriş yapın.
Uç durum — çoklu site kurulumları: WordPress Multisite’ta, doğru alt siteyi hedeflemek için komutun önüne --url=yoursite.com ekleyin:
wp user update 1 --user_pass="YourNewSecurePassword123!" --url=yoursite.com --allow-rootYöntem 4: WordPress Acil Durum Betiği Aracılığıyla Şifreyi Sıfırlama
En uygun olduğu durum: FTP erişiminiz olduğu ancak SSH, phpMyAdmin olmadığı ve functions.php yönteminin pratik olmadığı senaryolar (örneğin, aktif tema functions.php içermeyen bir blok temasıdır).
WordPress Codex, WordPress kurulumundan bağımsız olarak çalışan bağımsız bir PHP acil durum sıfırlama betiği (emergency.php) sağlar. Yeni bir şifre ister, doğru şekilde karmalar ve wp-config.php dosyasındaki kimlik bilgilerini kullanarak doğrudan veritabanına yazar.
Adım 1: Betiği Edinin
Betiği resmi WordPress GitHub deposundan veya Codex’ten indirin. Kanonik kaynak şudur:
https://codex.wordpress.org/Resetting_Your_Password#Through_the_emergency_password_reset_scriptDosyayı emergency.php olarak kaydedin.
Adım 2: WordPress Köküne Yükleyin
FTP istemcinizi kullanarak emergency.php dosyasını wp-config.php içeren aynı dizine yükleyin — genellikle /public_html/ veya /var/www/html/.
Adım 3: Betiği Bir Tarayıcıda Çalıştırın
Bir tarayıcı açın ve şuraya gidin:
https://yourdomain.com/emergency.phpBetik, veritabanı kimlik bilgilerini almak için wp-config.php dosyasını otomatik olarak okuyacak, ardından yeni bir şifre girmek ve onaylamak için bir form sunacaktır. Değişikliği uygulamak için formu gönderin.
Adım 4: Betiği Hemen Silin
Bu kritik öneme sahiptir. Betiğin kimlik doğrulama katmanı yoktur — URL’yi bilen veya tahmin eden herhangi biri, sitenizi ele geçirmek için kullanabilir. Erişimi yeniden kazandığınız anda silin:
rm /var/www/html/emergency.phpVeya FTP aracılığıyla silin. URL’yi tekrar yüklemeye çalışarak silmeyi doğrulayın — 404 döndürmesi gerekir.
Yöntem Karşılaştırması
| Yöntem | SSH Gerektirir | FTP Gerektirir | DB Erişimi Gerektirir | Tema Dosyalarını Değiştirir | Hız | Aktif Bırakılırsa Güvenlik Riski |
|---|---|---|---|---|---|---|
| — | — | — | — | — | — | — |
| phpMyAdmin | Hayır | Hayır | Evet (panel aracılığıyla) | Hayır | Hızlı | Yok |
| FTP aracılığıyla `functions.php` | Hayır | Evet | Hayır | Evet | Orta | Kritik |
| SSH aracılığıyla WP-CLI | Evet | Hayır | Hayır | Hayır | En Hızlı | Yok |
| Acil Durum Betiği | Hayır | Evet | Hayır | Hayır | Orta | Kritik |
Şifre Sıfırlamasından Sonra Güvenliği Güçlendirme
Erişimi yeniden kazanmak yalnızca ilk adımdır. Zorla yapılan manuel bir sıfırlama genellikle daha derin bir soruna işaret eder — ele geçirilmiş bir hesap, yanlış yapılandırılmış bir sunucu veya bozuk bir posta yığını. Bunları hemen ele alın:
- Son girişleri denetleyin. Aktif oturumları görmek için
wp_usermetaiçindesession_tokensdeğerini kontrol edin.wp user session destroy --all --allow-rootile tüm oturumları sonlandırın. - Gizli anahtarları değiştirin.
https://api.wordpress.org/secret-key/1.1/salt/adresinde yeni değerler oluşturun vewp-config.phpiçindeki ilgili sabitleri değiştirin. Bu, mevcut tüm çerezleri geçersiz kılar. - WordPress e-posta teslimini düzeltin. Bir SMTP eklentisi (WP Mail SMTP, Postman SMTP) kurun ve standart sıfırlama akışının gelecekte çalışması için bir işlemsel posta hizmetine (SendGrid, Mailgun, Amazon SES) bağlayın.
- İki faktörlü kimlik doğrulamayı etkinleştirin. WP 2FA veya Google Authenticator gibi eklentiler, kaba kuvvet kilitlenmelerini çok daha az olası kılan ikinci bir doğrulama katmanı ekler.
- Dosya izinlerini gözden geçirin.
wp-config.phpdeğeri640veya600olmalıdır.functions.phpdosyası644olmalıdır. Dünya tarafından yazılabilir dosyalar (777) anında kırmızı bayraktır. - Yetkisiz yönetici hesaplarını kontrol edin.
wp user list --role=administrator --allow-rootkomutunu çalıştırın ve tanımadığınız hesapları kaldırın.
Dedicated Server üzerinde barındırılan üretim ortamları için, kilitlemeye önceden eşlik etmiş olabilecek SSH kaba kuvvet girişimleri açısından /var/log/auth.log (veya RHEL tabanlı sistemlerde /var/log/secure) dosyasını da inceleyin.
Siteniz hassas kullanıcı verilerini veya e-ticaret işlemlerini işliyorsa, kimlik bilgilerinin hiçbir zaman düz metin olarak iletilmemesini sağlamak için güçlendirilmiş girişinizi düzgün şekilde verilmiş bir SSL Sertifikası ile eşleştirin.
Karar Matrisi: Hangi Yöntemi Kullanmalısınız?
Durumunuz için doğru yöntemi seçmek üzere bu kontrol listesini kullanın:
- cPanel veya DirectAdmin erişiminiz var — phpMyAdmin’i kullanın (Yöntem 1). En güvenli yöntemdir ve dosya değişikliği gerektirmez.
- FTP/SFTP’niz var ancak veritabanı paneliniz yok —
functions.phpyöntemini kullanın (Yöntem 2), ancak giriş yaptıktan sonra beş dakika içinde kodu kaldırmak için bir takvim hatırlatıcısı ayarlayın. - VPS veya özel sunucuya SSH erişiminiz var — WP-CLI’yi kullanın (Yöntem 3). En temiz yöntemdir, artık kod bırakmaz ve otomasyon için komut dosyasını destekler.
- FTP’niz var ancak aktif temanın
functions.phpdosyası yok (blok temalar, FSE temaları) — Acil Durum Betiğini kullanın (Yöntem 4) ve tarayıcı sekmesini kapatmadan önce silin. - Yukarıdakilerin hiçbiri mevcut değil — barındırma sağlayıcınızın destek ekibiyle iletişime geçin. Veritabanı şifresini altyapı düzeyinde sıfırlayabilirler.
SSS
S: phpMyAdmin aracılığıyla şifreyi sıfırlamak aktif oturumların çıkış yapmasına neden olur mu?
Hayır. Veritabanındaki user_pass değerini değiştirmek, mevcut WordPress kimlik doğrulama çerezlerini geçersiz kılmaz. Tüm oturumları zorla sonlandırmak için wp-config.php içindeki gizli anahtarları da güncellemeniz veya wp user session destroy --all kullanmanız gerekir.
S: wp_users tablom boş veya eksik. Ne oldu?
Bu genellikle başarısız bir veritabanı geçişini, bozuk bir içe aktarmayı veya wp-config.php içinde yanlış yapılandırılmış $table_prefix değerini gösterir. Öneki phpMyAdmin’deki gerçek tablo adlarıyla eşleştiğini doğrulayın. Tablo gerçekten eksikse, bir veritabanı yedeğinden geri yükleyin.
S: WordPress artık bcrypt kullandığına göre phpMyAdmin’de MD5 kullanabilir miyim?
Evet. WordPress’in kimlik doğrulama katmanı, girişte MD5 ile karmalanmış şifreleri algılar ve geriye dönük uyumluluk için kabul eder, ardından şifreyi mevcut algoritmayı (phpass/bcrypt) kullanarak hemen yeniden karmalar. MD5 karması yalnızca bir sonraki başarılı girişe kadar geçici olarak depolanır.
S: wp user update WP-CLI komutu bir izin hatası döndürüyor. Nasıl düzeltebilirim?
Bu genellikle WP-CLI’nin WordPress dosyalarına sahip olan kullanıcıdan farklı bir sistem kullanıcısı olarak çalıştığı anlamına gelir. Ya sudo -u www-data wp user update ... ile doğru kullanıcıya geçin ya da root olarak çalışıyorsanız --allow-root bayrağını ekleyin.
S: Acil durum betiğini birkaç saatliğine sunucuda bırakmak güvenli midir?
Hayır. Acil durum betiğinin sıfır kimlik doğrulama katmanı vardır — URL’yi keşfeden veya tahmin eden herhangi bir ziyaretçi, yönetici şifrenizi sıfırlamak ve sitenizin tam kontrolünü ele geçirmek için kullanabilir. Kullandıktan hemen sonra silin — bunu, açığa çıkmış bir özel anahtar ile aynı aciliyetle ele alın.
