Archive

Posts Tagged ‘MySQL’

MySQL и битые таблицы

September 20th, 2011 No comments

Положим, вам не повезло, и у вас побился файл таблицы mysql.users, а бэкапа нет. И repair не помогает. И войти на сервер уже нельзя. И пользователи негодуют. Как быть?

Расскажу, как мы решили подобную проблему однажды.

  1. Выключаем покалеченный сервер.
  2. Подкладываем содержимое var/mysql с любого “здорового” сервера аналогичной версии
  3. Запускаем сервер, и входим с логином/паролем “здорового” сервера.

Начиная с этого момента, у нас уже есть рут-доступ к серверу бд. Теперь нужно восстанавливать пользователей.

Если ваши условия схожи с нашими, то файлы  у вас разложены в в определенном порядке и с определенной структурой.  В нашем случае логины мы знаем зная путь к папке пользователя.
Т.е. фактически из тройки сервер-логин-пароль, два элемента мы уже знаем. Остается узнать установленные ранее пароли. И сделаем мы это просто:

find /directory -type f -exec grep ‘{sql.server.ru}’ \; >mysql.log

На выходе, в файле mysql.log мы получим список файлов, в котором встречается указанный вами адрес сервера.

После этого остается только распарсить файлы на предмет паролей, и затулить их обратно в базу данных.
Что опять же, не очень сложно, если формат пароля более-менее стандартизирован, и основные CMS известны: Joomla, WordPress, Drupal, e107, SMF, phpBB итд. Детали парсинга, если пожелает, раскроет fer0x.

Несколько часов жужжания – и 95% паролей восстановлено. Оставшиеся 5% – восстанавливать прийдется руками, по мере обнаружения не восстановленных.

Categories: Linux Tags: