我正在尝试创建我的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
等)是否会产生影响?
答案 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服务器。