在Docker中使用Sqoop导入PostgreSQL
我的本地机器上有一个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.1
或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.
任何建议将是非常有帮助!
如果这仅仅是本地测试,而不是用于生产水平编码,您可以通过更新pg_hba.conf
文件使所有受信任的连接到数据库
- 找到你的Postgres里面你
pg_hba.conf
文件data
目录 -
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
重新启动你的Postgres服务
如果你这样做(使用127.0.0.1
)这一点,你的第一个使用案例应该工作
对不起,我应该已经提到,我在做这在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