3

我的本地机器 (Windows) 上有一个 PostgreSQL 数据库,我想使用 Apache Sqoop 将它导入我的 Hortonworks Sandbox。虽然这样的事情听起来不错,但复杂的因素是我的 Sandbox 位于 Docker 容器中,因此诸如此类的语句sqoop list-tables --connect jdbc:postgresql://127.0.0.1/ambari --username ambari -P似乎会遇到身份验证错误。我相信问题来自尝试从 docker 容器内部连接到本地主机。

我查看了这篇关于从容器内连接到 MySQL DB 的文章,而这篇文章试图改用 PostgreSQL,但到目前为止还没有成功。我尝试连接到“127.0.0.1”和“172.17.0.1”(主机的 IP),以便从 Docker 中连接到我的本地主机。我还调整了 PostgreSQL 的配置文件以侦听所有 IP 地址上的连接。但是,当我运行时,我仍然会收到以下错误消息sqoop list-tables --connect jdbc:postgresql://<ip>:5432/<db_name> --username postgres -P(其中<ip>127.0.0.1or 172.17.0.1,并且<db_name>是我的数据库的名称)

用于连接127.0.0.1

ERROR sqoop.Sqoop: Got exception running Sqoop: java.lang.RuntimeException: org.postgresql.util.PSQLException: FATAL: Ident authentication failed for user "postgres"

用于连接172.17.0.1

Connection refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.

任何建议都会非常有帮助!

4

1 回答 1

0

如果这只是用于本地测试而不是用于生产级编码,您可以通过更新pg_hba.conf文件来启用到数据库的所有受信任连接

  1. pg_hba.conf在您的 postgresdata目录中找到您的文件
  2. Vim 文件并使用以下行更新它:

    #TYPE DATABASE USER ADDRESS METHOD local all all trust host all all 0.0.0.0/0 trust host all all ::1/128 trust

  3. 重启你的 postgres 服务

如果你这样做,你的第一个用例(使用127.0.0.1)应该可以工作

于 2017-10-17T16:34:10.483 回答