在Mac上通过网络访问postgresql服务器

6

我已经在我的Mac上安装了Postgres App并且运行了一个数据库。

通过使用命令psql -h localhost,我能够从终端连接到它。

现在我想从同一网络中的另一台机器访问此服务器。

当我从另一台机器运行psql -h <hostname> -U <username>时,我会收到错误提示信息:

psql: could not connect to server: Connection refused
    Is the server running on host "my hostname" (xx.xx.xx.xxx) and accepting
    TCP/IP connections on port 5432?

在运行服务器的机器上,我执行了lsof -i | grep LISTEN命令,并获得以下结果。
postgres  3196 sudarm    5u  IPv6 0x1caf6120      0t0  TCP localhost:5432 (LISTEN)
postgres  3196 sudarm    6u  IPv4 0x14678db0      0t0  TCP localhost:5432 (LISTEN)
postgres  3196 sudarm    7u  IPv6 0x1caf6a80      0t0  TCP localhost:5432 (LISTEN)

我需要在另一台机器上连接服务器,我需要做些什么?

1个回答

18
错误信息提出了正确的问题:服务器是否在5432端口上接受连接?您提供的lsof输出表明它没有。PostgreSQL正在侦听localhost:5432,这意味着它只会接受来自数据库服务器本身的连接。
打开服务器的postgresql.conf文件,将listen_addresses='*'设置为全局监听,并重启PostgreSQL。然后它将监听所有接口以接受网络连接。
从这里开始,您可能会遇到的下一个问题是身份验证。(PostgreSQL将接受连接,但您可能还没有告诉它一旦跨越网络建立连接该怎么做。)确保服务器的pg_hba.conf具有与数据库/用户/源地址组合匹配的条目——类似于host all all 10.0.0.0/8 md5,并根据需要重新加载PostgreSQL以应用更改。 md5部分告诉PostgreSQL尝试使用密码进行身份验证,因此如果您还没有设置密码,请在有关用户的位置设置密码。从任何您通常管理数据库的方式(例如,在数据库服务器上使用psql template1),输入 ALTER USER whomever WITH PASSWORD 'your_new_password'

还可能存在系统防火墙需要处理。通常需要按端口或进程添加例外,以允许传入连接。 - Craig Ringer
我正在使用Postgres应用程序。你知道我可以在哪里找到这些配置文件吗?还有@CraigRinger,我已经禁用了防火墙。 - Sudar
3
在 Pg 运行时,使用 psql 中的 SHOW config_file;SHOW hba_file; 是最简单的方法。 - Craig Ringer
谢谢,问题已解决。特别感谢@CraigRinger帮助配置变量。 - Sudar
我卡住了。你能帮我解决这个问题吗?https://dev59.com/66Hia4cB1Zd3GeqPSVsJ - mythicalcoder

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