15%

Збережіть 15% на всі хостинг-послуги

Перевірте свої навички і отримайте Знижку на будь-який план хостингу

Використовуй код:

Skills
Почати
21.10.2024

Як вручну скинути пароль адміністратора WordPress

Втрата доступу до адміністративного облікового запису WordPress не означає втрату контролю над сайтом. Якщо стандартний процес відновлення через «Забули пароль?» не працює — через неправильно налаштовані параметри пошти, недоступну електронну адресу або пошкоджений запис користувача — ви можете повністю обійти його, скинувши пароль безпосередньо на рівні бази даних, файлової системи або командного рядка.

Цей посібник охоплює чотири перевірені методи: phpMyAdmin, FTP через functions.php, WP-CLI через SSH та аварійний скрипт скидання пароля WordPress. Кожен метод пояснюється з точними кроками, застереженнями щодо безпеки та конкретними сценаріями, де він є правильним вибором.

Коли стандартний процес скидання не працює

Перш ніж вдаватися до ручного методу, зрозумійте, чому вбудоване скидання не спрацьовує. Найпоширеніші причини:

  • Порушена доставка пошти WordPresswp_mail() залежить від функції mail() PHP або SMTP-плагіна. Якщо жодне з них не налаштовано, лист для скидання мовчки відхиляється.
  • Немає доступу до зареєстрованої поштової скриньки — обліковий запис було створено з неактивною адресою.
  • Пошкоджена таблиця wp_users — рідко, але можливо після невдалої міграції або конфлікту плагінів.
  • Повністю заблокований доступ до wp-admin — плагіни захисту від брутфорсу (Wordfence, Limit Login Attempts) можуть блокувати сам ендпоінт скидання.

Визначення першопричини важливе, оскільки деякі методи (WP-CLI, phpMyAdmin) виправляють пароль, не торкаючись поштової системи, тоді як інші (аварійний скрипт) вимагають HTTP-доступу до сайту.

Метод 1: Скидання пароля через phpMyAdmin

Найкраще підходить для: середовищ спільного хостингу, де SSH недоступний, але cPanel або подібна панель керування доступна.

phpMyAdmin надає прямий доступ на читання/запис до бази даних MySQL або MariaDB, яка зберігає всі облікові дані користувачів WordPress. Паролі зберігаються як bcrypt-хеші (WordPress 6.x+) або MD5-хеші (застарілі інсталяції). Вбудований селектор функцій phpMyAdmin обробляє хешування автоматично.

Крок 1: Відкрийте phpMyAdmin з панелі керування

Увійдіть до панелі керування хостингом — cPanel, DirectAdmin або власної панелі. Знайдіть розділ Бази даних і натисніть phpMyAdmin. Якщо ви використовуєте VPS з cPanel, шлях зазвичай такий: cPanel > Бази даних > phpMyAdmin.

Крок 2: Виберіть базу даних WordPress

На лівій бічній панелі натисніть на назву бази даних, пов’язаної з вашою інсталяцією WordPress. Якщо ви не впевнені, яка база даних правильна, відкрийте wp-config.php у кореневому каталозі вашого сайту та знайдіть константу DB_NAME.

Крок 3: Відкрийте таблицю wp_users

Розгорніть таблиці бази даних і натисніть на wp_users. Якщо ваша інсталяція використовує власний префікс таблиці (визначений $table_prefix у wp-config.php), таблиця матиме назву <prefix>_users — наприклад, site7_users.

Крок 4: Відредагуйте рядок адміністратора

  1. Знайдіть рядок, де user_login відповідає вашому імені адміністратора. Для більшості стандартних інсталяцій це рядок з ID = 1.
  2. Натисніть Редагувати (значок олівця).
  3. Знайдіть поле user_pass.
  4. У випадаючому списку Функція поруч з user_pass виберіть MD5.
  5. У полі Значення введіть новий пароль у вигляді звичайного тексту.
  6. Прокрутіть вниз і натисніть Виконати.

Важлива технічна примітка: Вибір MD5 тут достатній для негайного входу, оскільки WordPress виконує перевірку застарілого MD5 під час входу, а потім автоматично повторно хешує пароль за допомогою більш надійного алгоритму phpass або bcrypt після успішної автентифікації. Вам не потрібно вручну генерувати bcrypt-хеш.

Крок 5: Перевірте зміну

Перейдіть на сторінку входу WordPress і увійдіть з новим паролем. Якщо вхід успішний, WordPress автоматично оновить хеш у базі даних до поточного алгоритму.

Метод 2: Скидання пароля через FTP шляхом зміни functions.php

Найкраще підходить для: ситуацій, коли phpMyAdmin недоступний, але облікові дані FTP/SFTP доступні.

Цей метод вставляє виклик скидання пароля безпосередньо в цикл виконання WordPress, тимчасово додаючи код до файлу functions.php активної теми.

Крок 1: Підключіться через FTP

Використовуйте FTP-клієнт, наприклад FileZilla або Cyberduck. Введіть FTP-хост, ім’я користувача, пароль і порт (21 для звичайного FTP, 22 для SFTP — завжди надавайте перевагу SFTP, якщо доступний). Перейдіть до:

/public_html/wp-content/themes/<your-active-theme>/

Щоб підтвердити, яка тема активна, не входячи до wp-admin, перевірте таблицю wp_options у phpMyAdmin для ключа параметра template.

Крок 2: Завантажте та відредагуйте functions.php

Завантажте functions.php на свій локальний комп’ютер. Відкрийте його в редакторі коду (VS Code, Sublime Text або будь-якому редакторі, який зберігає кодування UTF-8 без BOM). Додайте наступний рядок у самий кінець файлу:

<?php
// Temporary password reset — REMOVE IMMEDIATELY AFTER USE
add_action( 'init', function() {
    wp_set_password( 'YourNewSecurePassword123!', 1 );
});

Замініть 'YourNewSecurePassword123!' на обраний пароль. Другий аргумент (1) — це ID користувача. Якщо ваш адміністративний обліковий запис не має ID 1, спочатку зробіть запит до таблиці wp_users для підтвердження правильного ID.

Обгортання виклику в add_action( 'init', ... ) безпечніше, ніж виклик wp_set_password() безпосередньо на верхньому рівні файлу, оскільки це гарантує повне завантаження основних функцій WordPress перед виконанням.

Крок 3: Завантажте файл і увійдіть

Збережіть файл і завантажте його назад на сервер, перезаписавши оригінал. Завантажте будь-яку сторінку вашого сайту WordPress (навіть головну), щоб запустити хук init і виконати зміну пароля. Потім перейдіть до /wp-login.php і увійдіть з новим паролем.

Крок 4: Негайно видаліть код

Цей крок є обов’язковим. Залишення коду скидання в functions.php означає, що кожне завантаження сторінки скидає пароль до жорстко закодованого значення, створюючи критичну вразливість безпеки. Знову завантажте functions.php, видаліть додані рядки та повторно завантажте файл.

Метод 3: Скидання пароля через WP-CLI (командний рядок SSH)

Найкраще підходить для: розробників і системних адміністраторів з SSH-доступом до VPS або виділеного сервера. Це найшвидший і найчистіший метод.

WP-CLI — офіційний інтерфейс командного рядка для WordPress. Він може керувати користувачами, плагінами, темами та операціями з базою даних без використання браузера. Якщо ви використовуєте WordPress на плані VPS Хостингу або Виділеного сервера, WP-CLI майже напевно доступний або легко встановлюється.

Крок 1: Перевірте, чи встановлено WP-CLI

wp --info

Якщо команду не знайдено, встановіть її:

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

Крок 2: Перейдіть до кореневого каталогу WordPress

cd /var/www/html

Відкоригуйте шлях відповідно до вашого фактичного кореневого каталогу документів. Ви можете переконатися, що знаходитесь у правильному каталозі, перевіривши наявність wp-config.php:

ls wp-config.php

Крок 3: Скиньте пароль

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

Прапорець --allow-root є обов’язковим, якщо ви виконуєте команду від імені користувача root. Замініть 1 на фактичний ID користувача, якщо потрібно. Щоб спочатку знайти правильний ID:

wp user list --fields=ID,user_login,user_email --allow-root

Крок 4: Підтвердіть оновлення

WP-CLI виведе Success: Updated user 1. після завершення. Ви можете негайно перевірити зміну:

wp user get 1 --field=user_pass --allow-root

Це повертає новий bcrypt-хеш, підтверджуючи оновлення запису. Увійдіть до wp-admin для завершення процесу.

Граничний випадок — мультисайтові інсталяції: У WordPress Multisite додайте до команди префікс --url=yoursite.com для вибору правильного підсайту:

wp user update 1 --user_pass="YourNewSecurePassword123!" --url=yoursite.com --allow-root

Метод 4: Скидання пароля через аварійний скрипт WordPress

Найкраще підходить для: сценаріїв, де є FTP-доступ, але немає SSH, немає phpMyAdmin, а метод functions.php є непрактичним (наприклад, активна тема є блоковою темою без functions.php).

WordPress Codex надає автономний PHP-скрипт аварійного скидання (emergency.php), який працює незалежно від інсталяції WordPress. Він запитує новий пароль, правильно хешує його та записує безпосередньо до бази даних, використовуючи облікові дані з wp-config.php.

Крок 1: Отримайте скрипт

Завантажте скрипт з офіційного репозиторію WordPress на GitHub або з Codex. Канонічне джерело:

https://codex.wordpress.org/Resetting_Your_Password#Through_the_emergency_password_reset_script

Збережіть файл як emergency.php.

Крок 2: Завантажте до кореневого каталогу WordPress

За допомогою FTP-клієнта завантажте emergency.php до того самого каталогу, що містить wp-config.php — зазвичай /public_html/ або /var/www/html/.

Крок 3: Виконайте скрипт у браузері

Відкрийте браузер і перейдіть до:

https://yourdomain.com/emergency.php

Скрипт автоматично прочитає wp-config.php для отримання облікових даних бази даних, а потім відобразить форму для введення та підтвердження нового пароля. Надішліть форму для застосування змін.

Крок 4: Негайно видаліть скрипт

Це критично важливо. Скрипт не має рівня автентифікації — будь-хто, хто знає URL, може використати його для захоплення вашого сайту. Видаліть його одразу після відновлення доступу:

rm /var/www/html/emergency.php

Або видаліть через FTP. Перевірте видалення, спробувавши знову завантажити URL — він повинен повернути 404.

Порівняння методів

МетодПотребує SSHПотребує FTPПотребує доступу до БДЗмінює файли темиШвидкістьРизик безпеки при залишенні активним
phpMyAdminНіНіТак (через панель)НіШвидкоВідсутній
`functions.php` через FTPНіТакНіТакСередньоКритичний
WP-CLI через SSHТакНіНіНіНайшвидшеВідсутній
Аварійний скриптНіТакНіНіСередньоКритичний

Посилення безпеки після скидання пароля

Відновлення доступу — лише перший крок. Примусове ручне скидання часто сигналізує про глибшу проблему — скомпрометований обліковий запис, неправильно налаштований сервер або несправну поштову систему. Вирішіть ці проблеми негайно:

  • Перевірте останні входи. Перевірте wp_usermeta для session_tokens щоб побачити активні сесії. Знищте всі сесії за допомогою wp user session destroy --all --allow-root.
  • Змініть секретні ключі. Згенеруйте нові значення на https://api.wordpress.org/secret-key/1.1/salt/ та замініть відповідні константи у wp-config.php. Це анулює всі існуючі файли cookie.
  • Налаштуйте доставку пошти WordPress. Встановіть SMTP-плагін (WP Mail SMTP, Postman SMTP) і підключіть його до транзакційного поштового сервісу (SendGrid, Mailgun, Amazon SES), щоб стандартний процес скидання працював у майбутньому.
  • Увімкніть двофакторну автентифікацію. Плагіни, такі як WP 2FA або Google Authenticator, додають другий рівень перевірки, що значно знижує ймовірність блокування через брутфорс.
  • Перевірте права доступу до файлів. wp-config.php має бути 640 або 600. Файл functions.php має бути 644. Файли з правами запису для всіх (777) — це негайний тривожний сигнал.
  • Перевірте наявність несанкціонованих адміністративних облікових записів. Виконайте wp user list --role=administrator --allow-root і видаліть будь-які облікові записи, які ви не впізнаєте.

Для виробничих середовищ, розміщених на Виділеному сервері, також перегляньте /var/log/auth.log (або /var/log/secure на системах на основі RHEL) на наявність спроб брутфорсу SSH, які могли передувати блокуванню.

Якщо ваш сайт обробляє конфіденційні дані користувачів або транзакції електронної комерції, доповніть захищений вхід належним чином виданим SSL-сертифікатом, щоб облікові дані ніколи не передавалися у відкритому вигляді.

Матриця рішень: який метод використовувати?

Використовуйте цей контрольний список для вибору правильного методу у вашій ситуації:

  • У вас є доступ до cPanel або DirectAdmin — використовуйте phpMyAdmin (Метод 1). Це найбезпечніший варіант, який не потребує змін файлів.
  • У вас є FTP/SFTP, але немає панелі бази даних — використовуйте functions.php (Метод 2), але встановіть нагадування у календарі для видалення коду протягом п’яти хвилин після входу.
  • У вас є SSH-доступ до VPS або виділеного сервера — використовуйте WP-CLI (Метод 3). Це найчистіший варіант, який не залишає залишкового коду та підтримує скриптування для автоматизації.
  • У вас є FTP, але активна тема не має functions.php (блокові теми, FSE-теми) — використовуйте аварійний скрипт (Метод 4) і видаліть його до закриття вкладки браузера.
  • Жоден з вищезазначених варіантів недоступний — зверніться до служби підтримки вашого хостинг-провайдера. Вони можуть скинути пароль бази даних на рівні інфраструктури.

Часті запитання

П: Чи завершить скидання пароля через phpMyAdmin активні сесії?

Ні. Зміна user_pass у базі даних не анулює існуючі файли cookie автентифікації WordPress. Щоб примусово завершити всі сесії, необхідно також оновити секретні ключі у wp-config.php або використати wp user session destroy --all.

П: Моя таблиця wp_users порожня або відсутня. Що сталося?

Зазвичай це вказує на невдалу міграцію бази даних, пошкоджений імпорт або неправильно налаштований $table_prefix у wp-config.php. Перевірте, чи відповідає префікс фактичним назвам таблиць у phpMyAdmin. Якщо таблиця дійсно відсутня, відновіть її з резервної копії бази даних.

П: Чи можна використовувати MD5 у phpMyAdmin, навіть якщо WordPress тепер використовує bcrypt?

Так. Рівень автентифікації WordPress виявляє паролі, хешовані MD5, під час входу та приймає їх для зворотної сумісності, а потім негайно повторно хешує пароль за допомогою поточного алгоритму (phpass/bcrypt). MD5-хеш зберігається лише тимчасово до наступного успішного входу.

П: Команда WP-CLI wp user update повертає помилку прав доступу. Як це виправити?

Зазвичай це означає, що WP-CLI запускається від імені іншого системного користувача, ніж той, якому належать файли WordPress. Або перейдіть до правильного користувача за допомогою sudo -u www-data wp user update ..., або додайте прапорець --allow-root, якщо ви працюєте від імені root.

П: Чи безпечно залишати аварійний скрипт на сервері кілька годин?

Ні. Аварійний скрипт не має жодної автентифікації. Будь-який відвідувач, який виявить або вгадає URL, може використати його для скидання пароля адміністратора та отримання повного контролю над вашим сайтом. Видаліть його негайно після використання — ставтеся до нього з такою ж терміновістю, як до відкритого приватного ключа.

15%

Збережіть 15% на всі хостинг-послуги

Перевірте свої навички і отримайте Знижку на будь-який план хостингу

Використовуй код:

Skills
Почати