2017-10-17 72 views
3

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

我看着this post连接到一个容器内的MySQL数据库和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. 

任何建议将是非常有帮助!

回答

0

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

  1. 找到你的Postgres里面你pg_hba.conf文件data目录
  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)这一点,你的第一个使用案例应该工作

+0

对不起,我应该已经提到,我在做这在Windows上,这意味着本地/ all/all/trust不起作用(请参阅[本文])(https://stackoverflow.com/questions/16846363/postgresql-9-2-4-windows-7-service-wont-start-could-not -load-PG-HBA-CONF)) – tgordon18