【问题标题】:Import PostgreSQL with Sqoop in Docker在 Docker 中使用 Sqoop 导入 PostgreSQL
【发布时间】:2017-10-17 16:28:05
【问题描述】:

我的本​​地计算机 (Windows) 上有一个 PostgreSQL 数据库,我想使用 Apache Sqoop 将它导入我的 Hortonworks Sandbox。虽然this 之类的东西听起来不错,但复杂的因素是我的沙箱位于 Docker 容器中,因此sqoop list-tables --connect jdbc:postgresql://127.0.0.1/ambari --username ambari -P 之类的语句似乎会遇到身份验证错误。我认为问题出在尝试从 docker 容器内部连接到本地主机。

我查看了this post 从容器内连接到 MySQL DB 和 this one 尝试改用 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.1172.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.

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

【问题讨论】:

    标签: postgresql hadoop docker sqoop hortonworks-sandbox


    【解决方案1】:

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

    1. 在您的 postgres data 目录中找到您的 pg_hba.conf 文件
    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)应该可以工作

    【讨论】:

    • 对不起,我应该提到我在 Windows 上执行此操作,这意味着 local/all/all/trust 不起作用(请参阅this article
    猜你喜欢
    • 2021-11-03
    • 1970-01-01
    • 2018-03-07
    • 2018-09-17
    • 2016-10-16
    • 1970-01-01
    • 2016-08-07
    • 2017-02-03
    • 2019-04-26
    相关资源
    最近更新 更多