Назад | Перейти на главную страницу

Как восстановить доступ к серверу mysql и базе данных дампа?

Мы возвращаем управление нашим сервером, и теперь нам нужно провести обратный инжиниринг. Мы поручили разработку нашего нового веб-сайта внешней компании, и им нужен дамп базы данных со старого сайта.

Веб-сервер находится на Debian с запущенными Apache и MySQL. Я обнаружил, что сервер работает на локальном порту 3306. Сервер находится в рабочем состоянии.

Пробовал "длинный" mysqldump:

web:/home/user# mysqldump -P 3306 -h localhost -u root -p db
Enter password: 
-- MySQL dump 10.11
--
-- Host: localhost    Database: db
-- ------------------------------------------------------
-- Server version       5.0.32-Debian_7etch12-log

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
mysqldump: Got error: 1049: Unknown database 'db' when selecting the database

Имею root-доступ к машине. Вот мои вопросы:

Как я могу получить информацию о существующих базах данных?
Как мне получить к нему доступ (пользователь / пароль)?
Как сделать правильный дамп?

Если у вас больше нет доступа к mysql, вы можете сбросить пароль root mysql в сеансе ssh (как root), сначала остановив процесс сокета mysqld, убрав файл .pid. Не используйте kill -9.

kill `cat /mysql-data-directory/host_name.pid`

Теперь создайте текстовый файл со следующим запросом Mysql. Каждый по новой строке. Сохраните его как-нибудь вроде / home / me / mysql-init

UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
FLUSH PRIVILEGES;

Теперь запустите mysql с помощью следующей команды:

mysqld_safe --init-file=/home/me/mysql-init &

Вы только что восстановили доступ к mysql с пользователем root и новым паролем root. Не забудьте удалить файл mysql-init.

С помощью этой информации для входа вы можете показать все базы данных на сервере. Первый вход в mysql с новой информацией для входа:

mysql --user=root --password=your-password

Теперь просмотрите все базы данных:

mysql> show databases;

И теперь вы можете выгрузить любую базу данных в файл, используя:

mysqldump -h localhost -u root -p databasename > dumpfile.sql

Или просто все базы данных:

mysqldump -h localhost -u root -p --all-databases > all_dbs.sql

База данных явно не названа db.

Почему бы вам просто не сбросить все базы данных?

mysqldump --all-databases ......