通过终端连接PostgreSQL - 使用pgAdmin

3
我在连接(使用SSH)到我的VirtualBox(Ubuntu)PostgreSQL服务器时遇到了问题。我已经正确地设置了所有内容。
PostgreSQL设置: postgresql.conf -> 允许所有传入连接(*)并将ssl设置为TRUE pg_hba.conf -> 经过多次更改,我终于找到了似乎可以工作的设置:
IP4
host all all 0.0.0.0/0 trust
hostssl all all 0.0.0.0/0 trust
host all all 192.168.x.x/32 trust 
hostssl all all 192.168.x.x/32 trust 

我尝试过:

  1. Made restart of my postgres server on the virtual machine.

  2. Then i went to my host machine (Snow Leopard), build a ssh connection to the virtualbox (ubuntu) and it's working.

  3. ping my guest machine on port 5432 also works.

  4. Open pgadmin on my host machine (Snow Leopard) -> added server 192.68.56.1 and database pluto, user pippo. The connection worked and i see the DB.

  5. Tried open TERMINAL in Snow Leopard and executed following cmd:

    psql -h 192.168.56.1 -U pippo -d pluto
    

    with ERROR:

    psql: FATAL:  no pg_hba.conf entry for host "192.168.56.1", 
                  user "pippo", database "pluto", SSL off
    
我也尝试通过我的Java程序连接,但是我得到了相同的错误。
我做错了什么?

警告:pgadmin3(1.16)的SQL编辑器反应迟钝,就像在50波特调制解调器上每分钟输入100个单词一样。对于局域网应该没问题。 - Dave Jarvis
在postgresql.conf中,listen_addresses设置为什么? - Lukas Eklund
2个回答

0

pgAdmin 默认尝试使用和不使用 SSL 进行连接。

我怀疑你只尝试通过 psql 进行不使用 SSL 的连接,而服务器似乎要求使用 SSL 进行连接。请尝试:

psql "sslmode=require host=192.168.56.1 dbname=pluto" pippo

在手册中了解有关sslmode的更多信息。


我收到以下错误信息:psql: 服务器不支持 SSL,但需要 SSL。 - Patric
1
我会设置 log_statement = all,使用 pgAdmin 和 psql 进行连接,并检查服务器日志以找到差异。你的问题中肯定有些信息是缺失的。你是从同一台机器连接的吗?同样的 IP 地址 192.168.56.1 对于两者都可见吗? - Erwin Brandstetter
我正在连接到同一台机器,为虚拟机分配了一个静态IP地址192.168.56.1,我可以从主机ping通这个地址,所以它是可见的,也在端口5432上... - Patric
1
使用了log_statement = all,但我看不到任何不同的东西。连接字符串是:2013-02-05 21:25:50 INFO:使用连接字符串打开连接:dbname ='pluto' user ='pippo' password ='XXXXXX' port = 5432 sslcompression = 0 application_name ='pgAdmin III. Browser' - Patric
@Patric:你在日志中看到psql的失败尝试了吗?如果没有,你可能正在尝试连接到另一台服务器..(你不需要log_statement = all来检查。) - Erwin Brandstetter

0

从命令行打开我的查询到pgAdmin:

-f 包含要加载到查询窗口中的SQL脚本的文件

-qc 不包含密码的连接字符串(您也可以使用ssl连接)

"C:\Program Files\PostgreSQL\9.4\bin\pgAdmin3.exe" -f "C:\slqFiles\FindFunctionByName.sql" -qc "host=localhost port=5432 dbname=myDatabase user=postgres"

密码将从应用程序文件夹中的密码文件收集:%APPDATA%\postgresql\pgpass.conf

您需要连接的权限。尝试添加到C:\Program Files\PostgreSQL\9.6\data\pg_hba.conf下一行:

host all all ::/0 trust


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接