ایجاد مدیر جدید بدون ورود به پیشخوان وردپرس یکی از مهارت‌های حیاتی در مدیریت سایت است که در سناریوهای بحرانی مانند فراموشی رمز عبور، مسدود شدن دسترسی، حمله‌ی هکر یا خرابی افزونه‌های امنیتی، تنها راه بازگرداندن کنترل سایت است. برخلاف تصور رایج، ایجاد کاربر ادمین نیازمند دسترسی به پنل مدیریت نیست؛ می‌توان از WP-CLI، MySQL، PHP Script یا حتی REST API استفاده کرد. اما هر روش، محدودیت‌ها و ملاحظات امنیتی خاص خود را دارد. انتخاب روش مناسب، به سطح دسترسی موجود و شرایط بحران بستگی دارد. در این راهنما، فرآیند مهندسی ایجاد مدیر جدید بدون ورود به پیشخوان وردپرس، از روش‌های مختلف تا ملاحظات امنیتی و اعتبارسنجی، بررسی می‌شود.

در یکی از پروژه‌های نجات، افزونه‌ی امنیتی دسترسی ادمین را مسدود کرده بود و ورود به پنل غیرممکن شده بود. با استفاده از WP-CLI، کاربر ادمین جدید در کمتر از ۵ دقیقه ایجاد و دسترسی بازگردانده شد. این تجربه نشان می‌دهد که دانش چند روش، انعطاف‌پذیری بیشتری در بحران فراهم می‌کند.

چرا به این روش نیاز داریم

ایجاد مدیر جدید بدون پیشخوان در سناریوهای زیر ضروری است:

  • فراموشی رمز عبور ادمین: و ایمیل بازیابی در دسترس نیست.
  • مسدود شدن دسترسی توسط افزونه امنیتی: مانند Limit Login Attempts.
  • حذف ناخواسته‌ی تمام ادمین‌ها: در حین پاک‌سازی کاربران.
  • حمله‌ی هکر: تغییر رمز یا حذف کاربران ادمین.
  • خرابی دیتابیس: پنل ادمین بارگذاری نمی‌شود.
  • خطای PHP: Fatal Error در بارگذاری پنل.
  • مهاجرت به سرور جدید: انتقال سایت بدون انتقال کاربران.
  • تست خودکار: در CI/CD برای راه‌اندازی محیط.

روش‌های موجود

روش نیاز سرعت امنیت
WP-CLI دسترسی SSH سریع بالا
MySQL phpMyAdmin یا CLI متوسط متوسط
PHP Script دسترسی FTP/SSH سریع متوسط
REST API Application Password سریع بالا
functions.php دسترسی FTP سریع پایین

روش WP-CLI

WP-CLI امن‌ترین و سریع‌ترین روش است. پیش‌نیاز: دسترسی SSH.

ایجاد کاربر ادمین

# ایجاد کاربر ادمین
wp user create newadmin admin@example.com 
  --role=administrator 
  --user_pass="SecurePassword123!" 
  --display_name="New Administrator"

# بررسی
wp user list --role=administrator
wp user get newadmin

ارتقای کاربر موجود به ادمین

wp user add-role existinguser administrator
wp user set-role existinguser administrator
wp user update existinguser --user_pass="NewSecurePass123!"

اگر WP-CLI در دسترس نیست

# دانلود WP-CLI
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
php wp-cli.phar --info

# اجرا
php wp-cli.phar user create newadmin admin@example.com 
  --role=administrator 
  --user_pass="SecurePassword123!"

روش MySQL

در صورت نبود دسترسی SSH، MySQL از طریق phpMyAdmin یا CLI گزینه‌ی مناسبی است.

مراحل

  1. تولید هش رمز عبور با PHP.
  2. درج در wp_users.
  3. درج Capability در wp_usermeta.
  4. پاک‌سازی Cache.
# تولید هش
php -r '
require_once("/var/www/html/wp-includes/class-phpass.php");
$hasher = new PasswordHash(8, true);
echo $hasher->HashPassword("SecurePassword123!") . "
";
'

# درج کاربر
INSERT INTO wp_users (
  user_login, user_pass, user_nicename, user_email,
  user_url, user_registered, user_activation_key,
  user_status, display_name
) VALUES (
  "newadmin", "$P$Bxxxxx...", "newadmin", "admin@example.com",
  "", NOW(), "", 0, "New Administrator"
);

SET @user_id = LAST_INSERT_ID();

INSERT INTO wp_usermeta (user_id, meta_key, meta_value) VALUES
(@user_id, "wp_capabilities", 'a:1:{s:13:"administrator";b:1;}'),
(@user_id, "wp_user_level", "10"),
(@user_id, "nickname", "newadmin");

برای مطالعه‌ی جزئیات بیشتر، پست ایجاد کاربر ادمین وردپرس با MySQL مرجع کاملی است.

روش PHP Script

ایجاد یک فایل PHP موقت در ریشه‌ی سایت:

<?php
// create-admin.php
require_once(__DIR__ . "/wp-load.php");

$username = "emergency_admin";
$password = "EmergencyPass123!";
$email = "emergency@example.com";

if (!username_exists($username) && !email_exists($email)) {
    $user_id = wp_create_user($username, $password, $email);
    if (!is_wp_error($user_id)) {
        $user = new WP_User($user_id);
        $user->set_role("administrator");
        echo "User created: ID = {$user_id}
";
    } else {
        echo "Error: " . $user_id->get_error_message() . "
";
    }
} else {
    echo "User or email already exists
";
}

اجرا و پاک‌سازی فوری:

# اجرا با curl (از Localhost)
curl http://localhost/create-admin.php

# یا از مرورگر
# سپس حذف فوری
rm -f /var/www/html/create-admin.php

هشدار: این روش باید تنها از Localhost یا با IP Whitelist اجرا شود. اسکریپت باید فوراً پس از اجرا حذف شود.

روش REST API

در صورت وجود یک Application Password معتبر، می‌توان از REST API استفاده کرد:

curl -X POST https://example.com/wp-json/wp/v2/users 
  -u "existing_user:APP_PASSWORD" 
  -H "Content-Type: application/json" 
  -d '{
    "username": "newadmin",
    "email": "admin@example.com",
    "password": "SecurePassword123!",
    "roles": ["administrator"]
  }'

محدودیت: نیازمند یک کاربر با دسترسی create_users و promote_users.

مقایسه روش‌ها

معیار WP-CLI MySQL PHP Script REST API
سرعت بسیار سریع متوسط سریع سریع
نیاز به SSH بله خیر خیر خیر
مدیریت Cache خودکار دستی خودکار خودکار
امنیت بالا متوسط متوسط بالا
مناسب برای Production بحران بحران CI/CD

انتخاب روش، به سطح دسترسی و شرایط بحران بستگی دارد. WP-CLI گزینه‌ی اول، MySQL گزینه‌ی اضطراری، و PHP Script گزینه‌ی سریع است.

ملاحظات امنیتی

  • رمز عبور قوی: حداقل ۱۲ کاراکتر با ترکیب متنوع.
  • تغییر فوری رمز: پس از اولین ورود.
  • MFA: فعال‌سازی پس از ورود.
  • محدودسازی IP: برای ورود ادمین.
  • حذف کاربر موقت: پس از بازیابی.
  • Audit Log: ثبت رویداد در Error Log.
  • حذف اسکریپت: فوراً پس از اجرا.
  • HTTPS: اجبار HTTPS برای ورود.
  • Backup: پیش از هر عملیات.
  • پاک‌سازی Cache: پس از تغییرات.
// در wp-config.php
define("FORCE_SSL_ADMIN", true);
define("DISALLOW_FILE_EDIT", true);

اعتبارسنجی

  1. ورود به پنل: با نام کاربری و رمز جدید.
  2. بررسی دسترسی: دسترسی به تمام بخش‌های ادمین.
  3. بررسی Usermeta: Capability و User Level.
  4. بررسی Cache: پاک‌سازی شده.
  5. بررسی Error Log: بدون خطا.
# بررسی با WP-CLI
wp user list --role=administrator
wp user get newadmin --fields=ID,user_login,user_email,roles

پاک‌سازی پس از عملیات

# حذف کاربر موقت
wp user delete emergency_admin --yes --reassign=1

# حذف اسکریپت
rm -f /var/www/html/create-admin.php

# پاک‌سازی Cache
wp cache flush
redis-cli FLUSHALL

پرسش‌های پرتکرار

کدام روش امن‌ترین است؟

WP-CLI امن‌ترین است، چون هش را به‌درستی مدیریت می‌کند و Cache را خودکار پاک می‌کند.

چرا اسکریپت PHP باید فوراً حذف شود؟

چون در صورت باقی ماندن، هر کسی می‌تواند با اجرای آن، کاربر ادمین ایجاد کند.

آیا REST API برای ایجاد ادمین امن است؟

با Application Password و HTTPS، بله.

چگونه از ایجاد کاربر ناخواسته جلوگیری کنیم؟

با محدودسازی ثبت‌نام، MFA، مانیتورینگ و Audit Log.

آیا پس از ایجاد کاربر، نیاز به Restart سرور است؟

خیر، تنها Cache باید پاک شود.

آیا می‌توان از MD5 برای هش استفاده کرد؟

فقط در مواقع اضطراری. وردپرس در اولین ورود، هش را ارتقا می‌دهد.

چگونه پس از بازیابی، امنیت را تقویت کنیم؟

با تغییر رمزها، فعال‌سازی MFA، به‌روزرسانی افزونه‌ها و بررسی لاگ‌ها.

اشتباهات رایج

اشتباه علت راه‌حل
عدم Backup پیش از عملیات شتاب Backup کامل
استفاده از MD5 بدون تغییر ناآشنایی تغییر رمز پس از ورود
فراموشی Cache Invalidation فرض نبود Cache پاک‌سازی Redis/Memcached
عدم حذف اسکریپت غفلت حذف فوری
رمز عبور ضعیف شتاب رمز قوی
عدم حذف کاربر موقت فراموشی حذف کاربر
اجرای اسکریپت از اینترنت عدم محدودسازی اجرا از Localhost
عدم MFA پس از بازیابی فرض امنیت فعال‌سازی MFA

ملاحظات پیشرفته

در سطح معماری، ایجاد مدیر جدید نیازمند استراتژی جامع است:

۱. Emergency Access Plan: مستندسازی فرآیند بازیابی.

۲. Password Vault: نگهداری رمز اضطراری در Vault.

۳. MFA Backup Codes: نگهداری در محل امن.

۴. IP Whitelisting: محدودسازی ورود ادمین.

۵. Audit Log: ثبت تمام رویدادها.

۶. CI/CD Integration: ایجاد کاربر در راه‌اندازی محیط.

۷. Monitoring: پایش ورودهای مشکوک.

۸. Automated Testing: تست فرآیند بازیابی.

برای مطالعه‌ی بیشتر، پست‌های ایجاد حساب مدیر وردپرس با MySQL بدون پنل، ایجاد کاربر ادمین وردپرس با MySQL، دادن دسترسی Administrator با phpMyAdmin، چگونه کاربر جدید به وردپرس اضافه کنیم، مدیریت کاربران و نقش‌ها در وردپرس، احراز هویت در وردپرس چگونه تقویت می‌شود و فعال‌سازی احراز هویت دو مرحله‌ای 2FA مراجع کاملی هستند.

نتیجه

ایجاد مدیر جدید بدون ورود به پیشخوان وردپرس، یک مهارت حیاتی در مواقع بحران است که با WP-CLI، MySQL، PHP Script یا REST API قابل انجام است. انتخاب روش، به سطح دسترسی و شرایط بستگی دارد. ملاحظات امنیتی، Backup و پاک‌سازی پس از عملیات، بخشی جدایی‌ناپذیر از فرآیند است.

💡 اگر تجربه‌ای در ایجاد مدیر جدید بدون پنل داشته‌اید، برای ما جالب است بدانیم کدام روش بیشترین کارایی را در بحران داشت. تجربه‌ی خودتان را در دیدگاه‌ها بنویسید.