1 (изменено: acka, 2012-03-01 08:40:51)

Тема: восстановление учетной записи в БД

Добрый день.
Работаю на локальном хостинге, Joomla 1.7. При настройке Virtuemart удалил себя из списка покупателей. Выяснилось, что удалил себя (Super admin) из базы данных. Теперь не могу попасть в админ панель. В БД есть два зарегистрированных пользователя.
http://i079.radikal.ru/1203/d3/60621a28597ct.jpg

Каким образом можно восстановить свою учетную запись в БД как Супер администратора, или как передать зарегистрированному пользователю права Супер админа, чтобы попасть в административную панель?

2

Re: восстановление учетной записи в БД

Не могу сказать какие поля отвечают за определение Супер-админа. Думаю, самый простой вариант - это сделать тестовую установку на новый хост (можно использовать поддомен), развернуть там скрипт и посмотреть в базе данных поля созданного Супер-админа, после чего перенести их на рабочий сайт.

3 (изменено: acka, 2012-03-01 13:38:28)

Re: восстановление учетной записи в БД

Нашел хороший вариант, но он для Joomla 1.5, у меня Joomla  1.7
для тех, кому интересно, привожу текст полностью:

Может быть несколько причин по которым нам нужно востановить пароль от админки Joomla, это и плохая память и случайно удаленный файл с паролями. Можно конечно востановить пароль на e-mail, но если по какой то причине это невозможно, то на помощь нам придет этот метод.

Есть единственное место, где Joomla хранит все пароли пользователей — база данных, таблица jos_users или, если вы указали при инсталяции другой префикс таблиц, то ваш_префикс_users. Проблема в том, что даже имея доступ к базе данных через phpMyAdmin мы не узнаем пароль, потому что там он содержится в зашифрованном алгоритмом md5 виде и расшифровать его нельзя. Правда, в интернете есть базы, где можно поискать по своему md5 уже готовый пароль, но можно сделать намного проще.

Запускаем phpMyAdmin, выбираем слева нашу базу данных и на закладке SQL в поле «Выполнить SQL-запрос(ы) к базе данных» вводим наш запрос.

Первый вариант позволяет востановить пароль администратора по умолчанию. При установке Joomla супер-администратор имеет id номер 62 и ему мы присвоим логин admin и пароль admin

UPDATE `jos_users`
SET `name` = 'Super Administrator', `username` = 'admin', `email` = 'admin@site.ru', `password` = md5('admin'),
`usertype` = 'Super Administrator', `block` = '0', `sendEmail` = '1', `gid` = '25',
`registerDate` = '2011-01-01 00:00:00', `lastvisitDate` = '2011-01-01 00:00:00', `activation` = '', `params` = ''
WHERE `id` = '62';

Второй вариант — создать нового супер-администратора с логином superadmin и паролем superadmin

INSERT INTO `jos_users` (`id`, `name`, `username`, `password`, `email`, `usertype`, `gid`, `params`)
VALUES (LAST_INSERT_ID(), 'superadmin', 'superadmin', md5('superadmin'), 'superadmin@site.ru', 'Super Administrator', 25, '');

INSERT INTO `jos_core_acl_aro` (`id`, `section_value`, `value`,  `order_value`,  `name`, `hidden`)
VALUES (LAST_INSERT_ID(), 'users', LAST_INSERT_ID(), '0', 'superadmin', '0' );

INSERT INTO `jos_core_acl_groups_aro_map` (`group_id`, `section_value`, `aro_id`)
VALUES ( 25, '', LAST_INSERT_ID() );

Вы можете сразу вписать нужные вам логин и пароль или же поменять их позже через админку.

Update: Тем у кого не получилось могу посоветовать еще один метод

Смените почтовый ящик через MySQL и запросите пароль пароль на этот ящик с помощью url:

http://www.ваш_сайт.ru/component/user/reset если включен SEF

или для Joomla 1.5

http://www.ваш_сайт.ru/index.php?option=com_user&view=reset если SEF отключен.

Для Joomla 1.0 возможно подойдет url http://www.ваш_сайт.ru/index.php?option=com_registration&task=lostPassword не могу проверить за неимением оной.

Если же на сайте установлен сторонний компонент SEF и входа для пользователей с front-end не предусмотрено, то будет сложнее определить адрес для сброса пароля.


Вариант 2 очень понравился, но J1.5 и J1.7 есть расхождения в таблицах.
Например нет некоторых таблиц (`jos_core_acl_aro`) - вопрос, что вставлять во вторую часть INSERT INTO?

Третья часть скорее всего у меня, это - nebjw_user_usergroup_map, но что тогда писать вместо `aro_id`?

Надо ли вписывать id супер админа в строчки LAST_INSERT_ID()?

Мои таблицы:
Структура nebjw_usergroups
Структура nebjw_users
Структура nebjw_user_profiles
Структура nebjw_user_usergroup_map

4

Re: восстановление учетной записи в БД

Точно сказать не могу, но если вы удалили запись только из таблицы nebjw_users, и как я понял даже знаете id пользователя, то восстановить можно выполнив только один запрос. Только проверьте существуют ли такие поля в таблице nebjw_users, имеются в виду: `id`, `name`, `username`, `password`, `email`, `usertype`, `gid`, `params`.

Пометил изменения.

INSERT INTO `nebjw_users` (`id`, `name`, `username`, `password`, `email`, `usertype`, `gid`, `params`)
VALUES (42, 'superadmin', 'superadmin', md5('superadmin'), 'superadmin@site.ru', 'Super Administrator', 25, '');

5 (изменено: acka, 2012-03-01 16:41:38)

Re: восстановление учетной записи в БД

Hanut сказал:

Точно сказать не могу, но если вы удалили запись только из таблицы nebjw_users, и как я понял даже знаете id пользователя, то восстановить можно выполнив только один запрос. Только проверьте существуют ли такие поля в таблице nebjw_users, имеются в виду: `id`, `name`, `username`, `password`, `email`, `usertype`, `gid`, `params`.

Пометил изменения.

INSERT INTO `nebjw_users` (`id`, `name`, `username`, `password`, `email`, `usertype`, `gid`, `params`)
VALUES (42, 'superadmin', 'superadmin', md5('superadmin'), 'superadmin@site.ru', 'Super Administrator', 25, '');


http://i054.radikal.ru/1203/5a/1b3f22875cddt.jpg

То есть, я должен дописать свои поля в INSERT INTO...'bloсk', 'sendEmail', 'registerDate', 'lastvisitDate', 'activation'? Я правильно понял? Поля `gid` - нет.

6

Re: восстановление учетной записи в БД

Можете дописать поля, или попробуйте уже существующему пользователю поменять значение в поле `usertype` с "Зарегистрированные" на 'Super Administrator'. Если у вас есть пароль пользователя shadi, то это было бы проще всего.

7

Re: восстановление учетной записи в БД

Для восстановления учетной записи в БД php myAdmin Joomla 1.7

Запускаем phpMyAdmin, выбираем слева нашу базу данных и на закладке SQL в поле «Выполнить SQL-запрос(ы) к базе данных» вводим наш запрос. Префикс и id могут отличаться

INSERT INTO `nebjw_users` (`id`, `name`, `username`, `email`, `password`, `usertype`, `params`)
VALUES (42, 'superadmin', 'superadmin', md5('superadmin'), 'test@test.ru', 'Super Administrator','')

8

Re: восстановление учетной записи в БД

Первый шаг на пути к счастью сделан. Спасибо модератору (Hanut) за помощь.
Пользователя создал. Чуть подправил порядок и количество полей, но в админ панель все равно не пускает.
Нужен совет или направление движения мозгов. Картинка прилагается...не мозгов:))).

http://s54.radikal.ru/i146/1203/15/2f9898b2630bt.jpg

9

Re: восстановление учетной записи в БД

У вас есть пользователи; если знаете их пароли, то скопируйте из полей их в такие же поля нового супер-пользователя и зайдите уже под этими существующими паролями.

10 (изменено: acka, 2012-03-01 19:21:48)

Re: восстановление учетной записи в БД

Hanut сказал:

У вас есть пользователи; если знаете их пароли, то скопируйте из полей их в такие же поля нового супер-пользователя и зайдите уже под этими существующими паролями.

Не получается. К панели управления сайтом доступ был только у меня. С их паролями я не могу даже зайти на локальный сайт. Может другие две части тоже имеют значение при запросе в SQL

11 (изменено: acka, 2012-03-01 21:06:35)

Re: восстановление учетной записи в БД

Нашел. Всем спасибо за вынос мозга на поле боя.

Чтобы передать права доступа к панели управления просто юзеру (пользователю), надо во вкладке nebjw_user_usergroup_map (префикс может отличаться) выставить права Супер-пользователя.
Заходите во вкладку кликая по nebjw_user_usergroup_map, находите пользователя по id, например 43, как у простого зарегистрированного пользователя у него права group_id '2', вам надо выставить '8' - права Супер-пользователя (на карандашик для входа). Все права доступа можно посмотреть во вкладке nebjw_usergroups.

То есть, 3-я часть:
INSERT INTO `jos_core_acl_groups_aro_map` (`group_id`, `section_value`, `aro_id`)
VALUES ( 25, '', LAST_INSERT_ID() );
...имеет значение.


Сейчас попробую разобраться.
Я счастлив. Еще раз всем спасибо!!!!!!!!!!!!!!!!!!!!!!!!!!

12

Re: восстановление учетной записи в БД

Короче получилось. 3-я часть важна. Это значения таблицы nebjw_user_usergroup_map. Там есть 'user_id' и 'group_id'. У меня прописать не получается. Помогите, пожалуйста, создать форму.

http://s017.radikal.ru/i419/1203/0e/1430b54a7d26t.jpg

13

Re: восстановление учетной записи в БД

acka сказал:

У меня прописать не получается. Помогите, пожалуйста, создать форму.

Не понял. Что не получается прописать?

14 (изменено: acka, 2012-03-02 07:50:24)

Re: восстановление учетной записи в БД

ПРАВИЛЬНАЯ ФОРМА восстановления учетной записи в БД php myAdmin Joomla 1.7

Запускаем phpMyAdmin, выбираем слева нашу базу данных и на закладке SQL в поле «Выполнить SQL-запрос(ы) к базе данных» вводим наш запрос. Префикс (!!!!!) и id (!!!!!) могут отличаться. Предыдущая форма ввода не точна - перепутан порядок вкладок таблицы.

INSERT INTO `nebjw_users` (`id`, `name`, `username`, `password`,  `email`, `usertype`, `params`)
VALUES (43, 'superadmin', 'superadmin', md5('superadmin'), 'test@test.ru', 'Super Administrator','');

Далее идем в таблицу nebjw_user_usergroup_map(не забываем, что префикс может быть другой). Наверху жмем на закладку ВСТАВИТЬ. В верхнюю таблицу вводим в поля в столбце ЗНАЧЕНИЕ user_id пользователя - 43, group_id - 8.
И все - Вы получили доступ с правами супер админа ко входу в панель управления - Ваш логин (superadmin) и пароль (superadmin).

Разобрался.

15

Re: восстановление учетной записи в БД

Очень помогло ,спасибо, всё никак не получалось создать нового супер админа