【问题标题】:Accessing postgresql server over network in Mac在 Mac 中通过网络访问 postgresql 服务器
【发布时间】:2012-10-30 15:33:24
【问题描述】:

我已经在我的 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)

我是否需要做任何其他事情才能从另一台机器连接到服务器?

【问题讨论】:

    标签: macos postgresql


    【解决方案1】:

    错误消息提出了正确的问题:服务器是否接受端口 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'

    【讨论】:

    • 可能还有系统防火墙需要处理。通常需要为每个端口或每个进程添加一个例外以允许传入连接。
    • 我正在使用 Postgres 应用程序。你知道我在哪里可以找到这些配置文件吗?另外@CraigRinger 我已经禁用了防火墙。
    • @Sudar SHOW config_file;SHOW hba_file; 在 psql 中是 Pg 运行时最简单的方法。
    • 谢谢它解决了。特别感谢@CraigRinger 对配置变量的帮助。
    • 我卡住了。你能帮我解决这个问题吗? stackoverflow.com/questions/43718604/…
    猜你喜欢
    • 2016-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-30
    • 2017-08-11
    • 2014-04-23
    • 1970-01-01
    • 2021-08-10
    相关资源
    最近更新 更多