2017-10-17 192 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