Как восстановить права администратора?
Да, я гений. Мне удалось удалить все права администратора (спасибо плагину Membership). Я мог бы их восстановить... если бы у меня был доступ администратора, хах.
В общем, как мне вернуть все права администратора? У меня есть доступ к базе данных через PHPMyAdmin, но я не знаю, где и что нужно добавить обратно в базу данных.
Буду благодарен за любую помощь. Спасибо!
Строка ниже представляет собой массив в сериализованной форме.
a:1:{s:13:"administrator";s:1:"1";}
Здесь:
a:1 означает массив с одним элементом
s:13 означает строку и длину строки, следующей за ней
Array
{
"administrator" => "1"
}
После сохранения в таблице, вы можете использовать функцию unserialize() для преобразования обратно в массив для использования в вашем коде.
Большое спасибо.
a = array (массив), s = string (строка). Число обозначает размер элемента. Это стандартная сериализация в PHP.
a:1 = следующий элемент - это массив из одного элемента, s:13 = следующий элемент - строка из 13 символов, s:1 = следующий элемент - строка из одного символа
NiloVelez
Я столкнулся с той же проблемой, и это сработало для меня. Но вот более сложный вопрос: почему так происходит? Единственный плагин, который я использую - это JWT для аутентификации и пользовательский шаблон для API. Я не меняю никаких разрешений и даже не добавляю неизвестные плагины/шаблоны на свой сайт. Мне интересно, почему это произошло.
Paulo Henrique Queiroz
Хорошо, извините за вопрос. Я разобрался. Но для будущих пользователей вот совет.
Шаг 1 (РЕЗЕРВНАЯ КОПИЯ!!!!) - сделайте резервную копию вашей базы данных, если следующий шаг что-то испортит, а у вас не будет бэкапа - это будет только ваша вина.
Шаг 2 - Используйте PHPMyAdmin или аналогичный инструмент для доступа к БД, найдите таблицу wp_usermeta и отсортируйте по user_id. Пользователь #1 - это ваш администратор. Затем найдите поле wp_capabilities и нажмите "редактировать" (именно эта часть была испорчена у меня).
Я заменил испорченное значение. Вот это:
a:3:{s:15:"membershipadmin";s:1:"1";s:10:"M_add_ping";s:1:"1";s:10:"subscriber";s:1:"1";}
на это (которое я скопировал из другой WP базы данных):
a:4:{s:13:"administrator";s:1:"1";s:15:"membershipadmin";s:1:"1";s:11:"M_add_level";s:1:"1";s:10:"M_add_ping";s:1:"1";}
Прежде чем отметить свой ответ как верный, может кто-то подтвердит мое решение или объяснит содержимое этого поля и как оно должно выглядеть правильно? Вы можете взять мой ответ, переписать его как свой, и если он правильный - я отмечу ваш ответ.
Я внес изменения в базу данных, как было указано, но при входе в систему как администратор я по-прежнему не мог изменять пользователей или страницы.
При сравнении поля с ролями пользователей в базе данных я заметил, что оно отличается от других установок WordPress. Моим решением было следующее:
Найти поле с именем "wp_user_roles" в таблице [префикс базы данных]_options, например "wp_options", и убедиться, что у администраторов есть все необходимые возможности. Это сериализованная строка с большим объемом информации, поэтому я считаю, что проще всего скопировать данные из чистой установки WordPress.
У меня была такая же проблема, и ни одно из этих решений мне не помогло.
То, что в итоге сработало:
- Войдите в PHP Admin для редактирования базы данных
- Найдите таблицу wp_usermeta и посмотрите ID администратора (вероятно, это 1)
- Теперь найдите поле wp_capabilities
- Замените строку на следующую:
a:14:{s:13:"administrator";b:1;s:15:"membershipadmin";b:1;s:24:"membershipadmindashboard";b:1;s:22:"membershipadminmembers";b:1;s:21:"membershipadminlevels";b:1;s:28:"membershipadminsubscriptions";b:1;s:22:"membershipadmincoupons";b:1;s:24:"membershipadminpurchases";b:1;s:29:"membershipadmincommunications";b:1;s:21:"membershipadmingroups";b:1;s:20:"membershipadminpings";b:1;s:23:"membershipadmingateways";b:1;s:22:"membershipadminoptions";b:1;s:32:"membershipadminupdatepermissions";b:1;}
Обновите, и теперь у вас есть доступ ко всем функциям плагина membership.
Не могли бы вы добавить объяснение, как можно использовать представленный код? Иначе это не очень полезно.
Nicolai Grossherr
Это довольно просто. Всё, что я сделал - открыл phpmyadmin, выбрал базу данных с моего предыдущего сайта, нашёл таблицу wp_usermeta, кликнул на user_capabilities, и так как ID администратора был 1, я просто скопировал строки
(a:2:{s:13:"administrator";b:1;s:13:"bbp_keymaster";b:1;})
и вставил их в проблемную базу данных. Нажал сохранить, вышел из системы и зашёл снова - и мои роли вернулись.