如何 pg_dump 一个 RDS Postgres 数据库?

如何使用 pg _ dump 连接到 RDS 实例?

这是实例的端点:

<long public dns thing>:5432

所以我运行这个命令:

pg_dump -h <long public dns thing> -p 5432 -f dump.sql

还有这个:

pg_dump: [archiver (db)] connection to database "brendan" failed:
could not connect to server: Connection refused
Is the server running on host "<long public dns thing>"
(<IP address>) and accepting TCP/IP connections on port 5432?

以下是亚马逊的故障排除建议:

无法连接到 Amazon RDS PostgreSQL 数据库实例

当尝试连接到 PostgreSQLDB 实例时,最常见的问题是分配给 DB 实例的安全组具有不正确的访问规则。默认情况下,DB 实例不允许访问; 通过安全组授予访问权限。若要授予访问权限,必须创建自己的安全组,其中包含针对您的情况的特定进出规则。有关为 DB 实例创建安全组的详细信息,请参阅创建安全组。

最常见的错误是无法连接到服务器: 连接超时。如果收到此错误,请检查主机名是否为 DB 实例端点,以及端口号是否正确。检查分配给 DB 实例的安全组是否具有允许通过本地防火墙进行访问的必要规则。

有没有从 pg _ dump 指定安全组的方法?如果是这样,我是否需要获得一个本地副本,就像我在 ssh 时需要一个 ssh 键一样?

尝试远程使用 pg _ dump 是错误的吗?我应该只是尝试 ssh 到实例上,还是完全做其他事情?

78528 次浏览

步骤1: 在 AWS 上创建一个安全组,其中白色列出了计算机的 IP 地址。

步骤2: 将该安全组添加到要连接到的数据库实例。

步骤3: 运行 pg _ dump。请确保使用 -U 命令指定您的用户名(感谢@LHWizard)。在这种情况下,我的不是“ postgres”,所以我想一般来说,你将不得不寻找在法律中找到它。还要确保指定数据库的名称: 在一些命令行工具中有一个-d 开关,但是如果检查 pg _ dump 的用法:

Usage:
pg_dump [OPTION]... [DBNAME]

你可以看到这是一个正式的论点。 所以整个命令(在我的例子中)是:

pg_dump -h <public dns> -U <my username> -f dump.sql <name of my database>

注意,没有必要指定端口号——我认为这是因为端口5432是 postgres 的 THE 端口。