Como recuperar o acesso ao servidor myql e descarregar o banco de dados?

1

Nós retomamos a gestão do nosso servidor e agora precisamos fazer alguma engenharia reversa. Nós demos a uma empresa externa o desenvolvimento do nosso novo site e eles precisam de um despejo de banco de dados do site antigo.

O servidor Web está no Debian com o Apache e o MySQL rodando. Eu localizo o servidor em execução na porta 3306 do host local. O servidor está em produção.

Tentei um mysqldump "longshot":

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

Eu tenho o acesso root à máquina. Aqui minhas perguntas:

Como posso recuperar as informações sobre os bancos de dados existentes?
Como posso recuperar o acesso a ele (usuário / senha)?
Como posso fazer um despejo adequado?

    
por cgasp 07.06.2013 / 09:35

2 respostas

3

Se você não tem mais acesso ao mysql, você pode redefinir a senha root do mysql em uma sessão ssh (como root), primeiro parando o processo do socket mysqld, matando o arquivo .pid. Não use kill -9.

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

Agora crie um arquivo de texto com a seguinte consulta do MySQL. Cada um em uma nova linha. Salve-o em algo como / home / me / mysql-init

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

Agora inicie o mysql com o seguinte comando:

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

Você acabou de recuperar o acesso ao mysql com o usuário root e uma nova senha root. Não esqueça de deletar o arquivo mysql-init.

Com essas informações de login, você pode mostrar todos os bancos de dados no servidor. Primeiro login no mysql com as novas informações de login:

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

Agora veja todos os bancos de dados:

mysql> show databases;

E agora você pode despejar qualquer banco de dados desejado em um arquivo usando:

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

Ou apenas todos os bancos de dados:

mysqldump -h localhost -u root -p --all-databases > all_dbs.sql
    
por 07.06.2013 / 09:51
2

O banco de dados obviamente não é denominado db .

Por que você simplesmente não despeja todos os bancos de dados?

mysqldump --all-databases ......
    
por 07.06.2013 / 09:38