当前位置:首页 > MySQL
使用 data 恢复 MySQL 数据库
来源:靑龍一笑的博客  作者:靑龍一笑  发布时间:2020-08-13 14:40:59  点击量:764  评论:0

    由于业务需要,要求客户提供一下数据库。他们使用的是 MySQL 数据库,结果客户不懂得怎么导出数据,直接把整个 data 文件夹给打包过来。好在很早之前我就做了一个绿色版的 MySQL,要还原出来也挺简单的。
    首先,把 data 文件夹拷贝到我的 MySQL 数据库目录下,替换已有的 data 目录。
    接着,使用如下命令启动 MySQL:

D:\MySQL\bin>mysqld --skip-grant-tables

    此时,不需要密码,就可以登录到 MySQL 数据库:

D:\MySQL\bin>mysql

    修改 root 密码:

mysql> update mysql.user set password=password('dbA#2020') where user='root';
mysql> flush privileges;

    重启 MySQL。这样就把客户的数据库还原到我的机子上了。
    接下来,把还原好的数据库导到远程服务器上去。假设要导出的数据库名为 website,那么可以使用如下命令:

D:\MySQL\bin>mysqldump -uroot -pdbA#2020 --hex-blob --routines website > website.sql

    mysqldump 默认采用的字符集是 utf8,其中:

--hex-blob:使用十六进制格式导出二进制字符串字段,如果有二进制数据就必须使用此选项。
--routines:导出存储过程及自定义函数。

    由于没有指定导出的文件夹,website.sql 文件也就保存在当前目录下,也就是 MySQL 的 bin 目录下。
    假设远程服务器的 IP 是 10.18.16.166,端口是 3369,MySQL 的 root 密码是 dbA#2020,那么可以使用如下命令登录到远程 MySQL 服务器:

D:\MySQL\bin>mysql -h10.18.16.166 -uroot -pdbA#2020 -P3369 --default-character-set=utf8

    这里之所以要加上“--default-character-set=utf8”这一选项,是因为 windows 的 cmd 使用的编码是 936,也就是 GBK。为了避免导入的中文数据变成乱码,需要指定一下字符集。
    创建一个数据库,数据库名最好和刚才导出的数据库名保持一致(也可以不一致,根据自己的需要决定):

mysql> create database website default character set utf8;

    选择刚才创建的数据库:

mysql> use website

    选择要导入的备份文件,由于刚才备份在 MySQL 的 bin 目录下,因此,这里可以不指定路径:

mysql> source website.sql
版权所有 © 2005-2023 靑龍一笑的博客  Powered by C.S.Ricen
Copyright © 2005-2023 by www.ricensoftwares.com.cn  All Rights Reserved.

欢迎光临本站,这里是靑龍一笑的博客。

因资金匮乏,本站已迁到国外的免费空间,可能导致本站的访问速度较慢,由此给您带来的不便,敬请谅解。

您可以通过下方的“支持本站建设”链接,给本站提供资金支持。

Free Web Hosting