如何重新获得对myql服务器和转储数据库的访问?

我们重新pipe理我们的服务器,现在我们需要做一些逆向工程。 我们给了外部公司我们的新网站的发展,他们需要从旧网站的数据库转储

Web服务器在运行Apache和MySQL的Debian上。 我find在本地主机端口3306上运行的服务器。服务器正在生产。

尝试了一个“longshot”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 

我有机器的根访问权限。 在这里我的问题:

我如何检索有关现有数据库的信息?
我怎样才能检索到它(用户/通行证)?
我怎样才能做出正确的转储?

如果您再也无法访问mysql,可以通过先杀死.pid文件来停止mysqld套接字进程,然后在ssh会话中(以root身份)重置mysql root密码。 不要使用kill -9。

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

现在用下面的Mysql查询创build一个文本文件。 每一个新行。 保存到/ 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文件。

有了这个login信息,你可以显示服务器上的所有数据库。 首先使用新的login信息在mysql中login:

 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 ......