web-dev-qa-db-ja.com

mysqlサーバーとダンプデータベースへのアクセスを回復するにはどうすればよいですか?

サーバーの管理を取り戻し、リバースエンジニアリングを行う必要があります。私たちは外部の会社に新しいウェブサイトの開発を提供しました、そして彼らは古いサイトからのデータベースのダンプを必要としています。

Webサーバーは、ApacheとMySQLが実行されているDebian上にあります。ローカルホストポート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

マシンへのルートアクセス権があります。ここに私の質問があります:

既存のデータベースに関する情報を取得するにはどうすればよいですか?
アクセスを取得するにはどうすればよいですか(ユーザー/パス)?
適切なダンプを作成するにはどうすればよいですか?

1
cgasp

Mysqlにアクセスできなくなった場合は、最初に.pidファイルを強制終了してmysqldソケットプロセスを停止することにより、sshセッションで(rootとして)mysqlrootパスワードをリセットできます。 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 &

Rootユーザーと新しいrootパスワードを使用してmysqlへのアクセスを回復しました。 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
3
Wouter

データベースは明らかにdbという名前ではありません。

すべてのデータベースをダンプしてみませんか?

mysqldump --all-databases ......
2
Michael Hampton