15%

Hemat 15% di Semua Layanan Hosting

Uji kemampuanmu dan dapatkan Diskon pada paket hosting apa saja

Gunakan kode:

Skills
Memulai
21.10.2024

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 rusakwp_mail() bergantung pada fungsi mail() 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_users yang 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

  1. Temukan baris di mana user_login cocok dengan nama pengguna admin Anda. Untuk sebagian besar instalasi default, ini adalah baris dengan ID = 1.
  2. Klik Edit (ikon pensil).
  3. Temukan kolom user_pass.
  4. Pada dropdown Function di sebelah user_pass, pilih MD5.
  5. Di kolom Value, ketik kata sandi baru Anda dalam teks biasa.
  6. 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 --info

Jika 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/wp

Langkah 2: Navigasikan ke Direktori Root WordPress

cd /var/www/html

Sesuaikan 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.php

Langkah 3: Reset Kata Sandi

wp user update 1 --user_pass="YourNewSecurePassword123!" --allow-root

Flag --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-root

Langkah 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-root

Ini 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-root

Metode 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_script

Simpan 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.php

Skrip 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.php

Atau hapus melalui FTP. Verifikasi penghapusan dengan mencoba memuat URL lagi — harus mengembalikan 404.

Perbandingan Metode

MetodeMemerlukan SSHMemerlukan FTPMemerlukan Akses DBMemodifikasi File TemaKecepatanRisiko Keamanan jika Dibiarkan Aktif
phpMyAdminTidakTidakYa (melalui panel)TidakCepatTidak Ada
`functions.php` melalui FTPTidakYaTidakYaSedangKritis
WP-CLI melalui SSHYaTidakTidakTidakTercepatTidak Ada
Emergency ScriptTidakYaTidakTidakSedangKritis

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_usermeta untuk session_tokens guna melihat sesi aktif. Hancurkan semua sesi dengan wp 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 di wp-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.php harus 640 atau 600. File functions.php harus 644. 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-root dan 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.

15%

Hemat 15% di Semua Layanan Hosting

Uji kemampuanmu dan dapatkan Diskon pada paket hosting apa saja

Gunakan kode:

Skills
Memulai