Cara Mereset Kata Sandi Admin WordPress Secara Manual
Kehilangan akses ke akun admin WordPress tidak harus berarti kehilangan kendali atas situs Anda. Jika alur email “Lupa kata sandi?” standar tidak berfungsi — karena pengaturan mail yang salah dikonfigurasi, alamat email yang tidak dapat diakses, atau catatan pengguna yang rusak — Anda dapat melewatinya sepenuhnya dengan mereset kata sandi langsung di tingkat database, filesystem, atau shell.
Panduan ini mencakup empat metode yang telah teruji: phpMyAdmin, FTP melalui functions.php, WP-CLI melalui SSH, dan WordPress Emergency Password Reset Script. Setiap metode dijelaskan dengan langkah-langkah yang tepat, peringatan keamanan, dan skenario spesifik di mana metode tersebut adalah pilihan yang tepat.
Ketika Alur Reset Standar Gagal
Sebelum menggunakan metode manual, pahami mengapa reset bawaan gagal. Penyebab paling umum adalah:
- Pengiriman mail WordPress yang rusak —
wp_mail()bergantung pada fungsimail()PHP atau plugin SMTP. Jika keduanya tidak dikonfigurasi, email reset akan dihapus secara diam-diam. - Tidak ada akses ke kotak masuk email yang terdaftar — akun dibuat dengan alamat yang sudah tidak aktif.
- Tabel
wp_usersyang rusak — jarang terjadi, tetapi mungkin terjadi setelah migrasi yang gagal atau konflik plugin. - Terkunci dari wp-admin sepenuhnya — plugin perlindungan brute-force (Wordfence, Limit Login Attempts) dapat memblokir endpoint reset itu sendiri.
Mengidentifikasi akar penyebabnya penting karena beberapa metode (WP-CLI, phpMyAdmin) memperbaiki kata sandi tanpa menyentuh sistem mail sama sekali, sementara yang lain (skrip darurat) memerlukan akses HTTP ke situs.
Metode 1: Reset Kata Sandi melalui phpMyAdmin
Terbaik untuk: Lingkungan shared hosting di mana SSH tidak tersedia tetapi cPanel atau panel kontrol serupa dapat diakses.
phpMyAdmin memberi Anda akses baca/tulis langsung ke database MySQL atau MariaDB yang menyimpan semua kredensial pengguna WordPress. Kata sandi disimpan sebagai hash bcrypt (WordPress 6.x+) atau hash MD5 (instalasi lama). Pemilih fungsi bawaan phpMyAdmin menangani hashing secara otomatis.
Langkah 1: Buka phpMyAdmin dari Panel Kontrol Anda
Masuk ke panel kontrol hosting Anda — cPanel, DirectAdmin, atau panel kustom. Temukan bagian Databases dan klik phpMyAdmin. Jika Anda menggunakan VPS dengan cPanel, jalurnya biasanya cPanel > Databases > phpMyAdmin.
Langkah 2: Pilih Database WordPress
Di sidebar sebelah kiri, klik nama database yang terkait dengan instalasi WordPress Anda. Jika Anda tidak yakin database mana yang benar, buka wp-config.php di direktori root situs Anda dan cari konstanta DB_NAME.
Langkah 3: Buka Tabel wp_users
Perluas tabel database dan klik wp_users. Jika instalasi Anda menggunakan awalan tabel kustom (didefinisikan oleh $table_prefix di wp-config.php), tabel akan diberi nama <prefix>_users — misalnya, site7_users.
Langkah 4: Edit Baris Pengguna Admin
- Temukan baris di mana
user_logincocok dengan nama pengguna admin Anda. Untuk sebagian besar instalasi default, ini adalah baris denganID = 1. - Klik Edit (ikon pensil).
- Temukan kolom
user_pass. - Pada dropdown Function di sebelah
user_pass, pilih MD5. - Di kolom Value, ketik kata sandi baru Anda dalam teks biasa.
- Gulir ke bawah dan klik Go.
Catatan teknis penting: Memilih MD5 di sini sudah cukup untuk login segera karena WordPress melakukan pemeriksaan MD5 lama saat login dan kemudian secara otomatis me-rehash kata sandi menggunakan algoritma phpass atau bcrypt yang lebih kuat setelah autentikasi berhasil. Anda tidak perlu membuat hash bcrypt secara manual.
Langkah 5: Verifikasi Perubahan
Navigasikan ke halaman login WordPress Anda dan masuk dengan kata sandi baru. Jika login berhasil, WordPress akan secara diam-diam meningkatkan hash dalam database ke algoritma saat ini.
Metode 2: Reset Kata Sandi melalui FTP dengan Memodifikasi functions.php
Terbaik untuk: Situasi di mana phpMyAdmin tidak tersedia tetapi kredensial FTP/SFTP dapat diakses.
Metode ini menyuntikkan panggilan reset kata sandi langsung ke siklus eksekusi WordPress dengan menambahkan kode sementara ke file functions.php tema aktif.
Langkah 1: Hubungkan melalui FTP
Gunakan klien FTP seperti FileZilla atau Cyberduck. Masukkan host FTP, nama pengguna, kata sandi, dan port (21 untuk FTP biasa, 22 untuk SFTP — selalu pilih SFTP jika tersedia). Navigasikan ke:
/public_html/wp-content/themes/<your-active-theme>/Untuk mengonfirmasi tema mana yang aktif tanpa masuk ke wp-admin, periksa tabel wp_options di phpMyAdmin untuk kunci opsi template.
Langkah 2: Unduh dan Edit functions.php
Unduh functions.php ke mesin lokal Anda. Buka di editor kode (VS Code, Sublime Text, atau editor apa pun yang mempertahankan encoding UTF-8 tanpa BOM). Tambahkan baris berikut di bagian paling bawah file:
<?php
// Temporary password reset — REMOVE IMMEDIATELY AFTER USE
add_action( 'init', function() {
wp_set_password( 'YourNewSecurePassword123!', 1 );
});Ganti 'YourNewSecurePassword123!' dengan kata sandi pilihan Anda. Argumen kedua (1) adalah ID pengguna. Jika akun admin Anda bukan ID 1, query tabel wp_users terlebih dahulu untuk mengonfirmasi ID yang benar.
Membungkus panggilan dalam add_action( 'init', ... ) lebih aman daripada memanggil wp_set_password() langsung di tingkat atas file, karena memastikan fungsi inti WordPress sepenuhnya dimuat sebelum eksekusi.
Langkah 3: Upload dan Masuk
Simpan file dan upload kembali ke server, menimpa yang asli. Muat halaman mana pun dari situs WordPress Anda (bahkan beranda) untuk memicu hook init dan menjalankan perubahan kata sandi. Kemudian navigasikan ke /wp-login.php dan masuk dengan kata sandi baru.
Langkah 4: Hapus Kode Segera
Langkah ini tidak opsional. Membiarkan kode reset di functions.php berarti setiap pemuatan halaman mereset kata sandi ke nilai yang dikodekan secara keras, menciptakan kerentanan keamanan kritis. Unduh functions.php lagi, hapus baris yang Anda tambahkan, dan upload ulang.
Metode 3: Reset Kata Sandi melalui WP-CLI (Command Line SSH)
Terbaik untuk: Developer dan sysadmin dengan akses SSH ke VPS atau server dedicated. Ini adalah metode tercepat dan terbersih.
WP-CLI adalah antarmuka command-line resmi untuk WordPress. Ini dapat mengelola pengguna, plugin, tema, dan operasi database tanpa menyentuh browser. Jika Anda menjalankan WordPress pada paket VPS Hosting atau Dedicated Server, WP-CLI hampir pasti tersedia atau dapat diinstal dengan mudah.
Langkah 1: Verifikasi WP-CLI Terinstal
wp --infoJika perintah tidak ditemukan, instal:
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/wpLangkah 2: Navigasikan ke Direktori Root WordPress
cd /var/www/htmlSesuaikan jalur agar sesuai dengan document root Anda yang sebenarnya. Anda dapat memverifikasi bahwa Anda berada di direktori yang benar dengan memeriksa wp-config.php:
ls wp-config.phpLangkah 3: Reset Kata Sandi
wp user update 1 --user_pass="YourNewSecurePassword123!" --allow-rootFlag --allow-root diperlukan jika Anda menjalankan perintah sebagai pengguna root. Ganti 1 dengan ID pengguna yang sebenarnya jika diperlukan. Untuk mencari ID yang benar terlebih dahulu:
wp user list --fields=ID,user_login,user_email --allow-rootLangkah 4: Konfirmasi Pembaruan
WP-CLI akan menampilkan Success: Updated user 1. setelah selesai. Anda dapat segera memverifikasi perubahan:
wp user get 1 --field=user_pass --allow-rootIni mengembalikan hash bcrypt baru, mengonfirmasi bahwa catatan telah diperbarui. Masuk ke wp-admin untuk menyelesaikan prosesnya.
Kasus tepi — instalasi multisite: Pada WordPress Multisite, awali perintah dengan --url=yoursite.com untuk menargetkan subsite yang benar:
wp user update 1 --user_pass="YourNewSecurePassword123!" --url=yoursite.com --allow-rootMetode 4: Reset Kata Sandi melalui WordPress Emergency Script
Terbaik untuk: Skenario di mana Anda memiliki akses FTP tetapi tidak ada SSH, tidak ada phpMyAdmin, dan metode functions.php tidak praktis (misalnya, tema aktif adalah block theme tanpa functions.php).
WordPress Codex menyediakan skrip reset darurat PHP mandiri (emergency.php) yang berjalan secara independen dari instalasi WordPress. Skrip ini meminta kata sandi baru, melakukan hashing dengan benar, dan menulisnya langsung ke database menggunakan kredensial dari wp-config.php.
Langkah 1: Dapatkan Skrip
Unduh skrip dari repositori GitHub WordPress resmi atau Codex. Sumber kanoniknya adalah:
https://codex.wordpress.org/Resetting_Your_Password#Through_the_emergency_password_reset_scriptSimpan file sebagai emergency.php.
Langkah 2: Upload ke Root WordPress
Menggunakan klien FTP Anda, upload emergency.php ke direktori yang sama yang berisi wp-config.php — biasanya /public_html/ atau /var/www/html/.
Langkah 3: Jalankan Skrip di Browser
Buka browser dan navigasikan ke:
https://yourdomain.com/emergency.phpSkrip akan membaca wp-config.php secara otomatis untuk mendapatkan kredensial database, kemudian menampilkan formulir untuk memasukkan dan mengonfirmasi kata sandi baru. Kirim formulir untuk menerapkan perubahan.
Langkah 4: Hapus Skrip Segera
Ini sangat penting. Skrip tidak memiliki lapisan autentikasi — siapa pun yang mengetahui URL dapat menggunakannya untuk mengambil alih situs Anda. Hapus segera setelah Anda mendapatkan kembali akses:
rm /var/www/html/emergency.phpAtau hapus melalui FTP. Verifikasi penghapusan dengan mencoba memuat URL lagi — harus mengembalikan 404.
Perbandingan Metode
| Metode | Memerlukan SSH | Memerlukan FTP | Memerlukan Akses DB | Memodifikasi File Tema | Kecepatan | Risiko Keamanan jika Dibiarkan Aktif |
|---|---|---|---|---|---|---|
| — | — | — | — | — | — | — |
| phpMyAdmin | Tidak | Tidak | Ya (melalui panel) | Tidak | Cepat | Tidak Ada |
| `functions.php` melalui FTP | Tidak | Ya | Tidak | Ya | Sedang | Kritis |
| WP-CLI melalui SSH | Ya | Tidak | Tidak | Tidak | Tercepat | Tidak Ada |
| Emergency Script | Tidak | Ya | Tidak | Tidak | Sedang | Kritis |
Penguatan Keamanan Setelah Reset Kata Sandi
Mendapatkan kembali akses hanyalah langkah pertama. Reset manual yang dipaksakan sering kali menandakan masalah yang lebih dalam — akun yang disusupi, server yang salah dikonfigurasi, atau tumpukan mail yang rusak. Tangani ini segera:
- Audit login terbaru. Periksa
wp_usermetauntuksession_tokensguna melihat sesi aktif. Hancurkan semua sesi denganwp user session destroy --all --allow-root. - Rotasi secret key. Buat nilai baru di
https://api.wordpress.org/secret-key/1.1/salt/dan ganti konstanta yang sesuai diwp-config.php. Ini membatalkan semua cookie yang ada. - Perbaiki pengiriman email WordPress. Instal plugin SMTP (WP Mail SMTP, Postman SMTP) dan hubungkan ke layanan mail transaksional (SendGrid, Mailgun, Amazon SES) agar alur reset standar berfungsi di masa mendatang.
- Aktifkan autentikasi dua faktor. Plugin seperti WP 2FA atau Google Authenticator menambahkan lapisan verifikasi kedua yang membuat lockout brute-force jauh lebih kecil kemungkinannya.
- Tinjau izin file.
wp-config.phpharus640atau600. Filefunctions.phpharus644. File yang dapat ditulis oleh semua orang (777) adalah tanda bahaya langsung. - Periksa akun admin yang tidak sah. Jalankan
wp user list --role=administrator --allow-rootdan hapus akun yang tidak Anda kenali.
Untuk lingkungan produksi yang dihosting di Dedicated Server, tinjau juga /var/log/auth.log (atau /var/log/secure pada sistem berbasis RHEL) untuk upaya brute-force SSH yang mungkin mendahului lockout.
Jika situs Anda menangani data pengguna sensitif atau transaksi e-commerce, pasangkan login yang diperkuat dengan SSL Certificate yang diterbitkan dengan benar untuk memastikan kredensial tidak pernah dikirimkan dalam teks biasa.
Matriks Keputusan: Metode Mana yang Harus Anda Gunakan?
Gunakan daftar periksa ini untuk memilih metode yang tepat untuk situasi Anda:
- Anda memiliki akses cPanel atau DirectAdmin — gunakan phpMyAdmin (Metode 1). Ini paling aman dan tidak memerlukan modifikasi file.
- Anda memiliki FTP/SFTP tetapi tidak ada panel database — gunakan
functions.php(Metode 2), tetapi atur pengingat kalender untuk menghapus kode dalam lima menit setelah masuk. - Anda memiliki akses SSH ke VPS atau server dedicated — gunakan WP-CLI (Metode 3). Ini paling bersih, tidak meninggalkan kode residual, dan mendukung skripting untuk otomatisasi.
- Anda memiliki FTP tetapi tema aktif tidak memiliki
functions.php(block theme, FSE theme) — gunakan Emergency Script (Metode 4), dan hapus sebelum menutup tab browser. - Tidak ada yang tersedia di atas — hubungi tim dukungan penyedia hosting Anda. Mereka dapat mereset kata sandi database di tingkat infrastruktur.
FAQ
T: Apakah mereset kata sandi melalui phpMyAdmin akan mengeluarkan sesi aktif?
Tidak. Mengubah user_pass di database tidak membatalkan cookie autentikasi WordPress yang ada. Untuk memaksa semua sesi berakhir, Anda juga harus memperbarui secret key di wp-config.php atau menggunakan wp user session destroy --all.
T: Tabel wp_users saya kosong atau hilang. Apa yang terjadi?
Ini biasanya menunjukkan migrasi database yang gagal, impor yang rusak, atau $table_prefix yang salah dikonfigurasi di wp-config.php. Verifikasi bahwa awalan cocok dengan nama tabel yang sebenarnya di phpMyAdmin. Jika tabel benar-benar hilang, pulihkan dari backup database.
T: Dapatkah saya menggunakan MD5 di phpMyAdmin meskipun WordPress sekarang menggunakan bcrypt?
Ya. Lapisan autentikasi WordPress mendeteksi kata sandi yang di-hash dengan MD5 saat login dan menerimanya untuk kompatibilitas mundur, kemudian segera me-rehash kata sandi menggunakan algoritma saat ini (phpass/bcrypt). Hash MD5 hanya disimpan sementara hingga login berhasil berikutnya.
T: Perintah WP-CLI wp user update mengembalikan kesalahan izin. Bagaimana cara memperbaikinya?
Ini biasanya berarti WP-CLI berjalan sebagai pengguna sistem yang berbeda dari yang memiliki file WordPress. Beralih ke pengguna yang benar dengan sudo -u www-data wp user update ... atau tambahkan flag --allow-root jika Anda beroperasi sebagai root.
T: Apakah aman membiarkan skrip darurat di server selama beberapa jam?
Tidak. Skrip darurat tidak memiliki autentikasi sama sekali. Setiap pengunjung yang menemukan atau menebak URL dapat menggunakannya untuk mereset kata sandi admin Anda dan mengambil kendali penuh atas situs Anda. Hapus segera setelah digunakan — perlakukan dengan urgensi yang sama seperti private key yang terekspos.
