未加密的Amazon RDS上的Mysqldump正在创建加密的.db文件

时间:2018-04-08 23:29:47

标签: mysql sqlite amazon-web-services amazon-rds

我正在尝试创建我的RDS数据转储并在本地使用它。

我使用了命令:

mysqldump -h myhostname.rds.amazonaws.com -u my_username -p my_dbname > ~/Downloads/dump.sql

当我尝试在DB Browser for sqlite等工具中查看此数据时,我会收到提示,说明它已加密,要求输入密码。

我想也许首先需要转换成sqlite,所以我在RazorSQL中完成了这个 - >但我仍然遇到同样的问题。此外,当我尝试将数据库加载到NodeJS的sqlite模块时,我得到:

not able to query Table in SQLite DB Error: SQLITE_NOTADB: file is encrypted or is not a database

我已经检查了我的RDS设置,它说:

Encryption details: Encryption enabled No

所以我不知道这里发生了什么。有小费吗?文件扩展名(.sql.db等)是否会产生影响?

1 个答案:

答案 0 :(得分:2)

  

当我尝试在DB Browser for sqlite

等工具中查看此数据时

Sqlite与MySQL完全不同。可以与两者兼容的工具几乎没有重叠。

您使用的工具无法用于您应用它的目的,因此您会收到一个令人困惑的错误:

file is encrypted or is not a database

换句话说,该工具无法理解文件,因此发生了以下两种情况之一:文件已加密或不是[sqlite]数据库[根本]

问题在于后者。

该文件未加密。即使RDS实例已加密,生成的转储文件仍然不会被加密,因为RDS中的加密是静态数据的存储级加密,支持RDS实例的磁盘卷。 RDS中的加密对用户是透明的。

问题在于您所拥有的是转储文件 - 一系列可用于在另一台MySQL服务器上重建数据库的SQL语句。 / p>

您的文件是纯文本。您可以通过文本编辑器查看它。您不能做的是将文件用作数据库 - 这是Sqlite可以做的事情,因为Sqlite将数据库存储在单个可传输文件中。 MySQL是一种不同的架构。

您需要在本地安装相同版本的MySQL服务器(例如5.7.x),然后将此文件加载到其上。

shell> mysql [options] < my_dump_file.sql
  

要重新加载由mysqldump编写的包含SQL语句的转储文件,请将其用作mysql客户端的输入。

     

https://dev.mysql.com/doc/refman/5.7/en/reloading-sql-format-dumps.html

您也可以使用像Toad或Workbench这样的MySQL查询浏览器工具,但需要本地MySQL服务器。