ift*_*itz 5 postgresql tcpip postgresql-9.3
我知道有人问过这个或类似的问题 在其他地方过。其他答案都没有对我有用。
机器是 Macbook Pro 2014 / OS X Yosemite 10.10,通过 Homebrew 安装了 Postgres 9.3.5。
如果我没有指定主机,我只能连接到我的本地 postgres 实例。这有效:
psql -Umyuser -d mydb
sql (9.4.4)
Type "help" for help.
myuser=#
Run Code Online (Sandbox Code Playgroud)
-h localhost 才不是:
psql -Umyuser -d mydb -h localhost
psql: server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
Run Code Online (Sandbox Code Playgroud)
在我收到这条消息之前,它暂停了很长时间。
我正在尝试设置一个似乎想要指定 localhost 的第三方工具,因此不能仅将其关闭。
如果我理解我在其他地方正确阅读的内容,那么如果您使用 TCP/IP 并指定-h localhost强制使用,则 postgres 的行为会有所不同。因此,我在 中添加了以下内容pg_hba.conf:
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
host all all localhost trust
# IPv6 local connections:
host all all ::1/128 trust
Run Code Online (Sandbox Code Playgroud)
(127.0.0.1 AND localhost 似乎是多余的,但绝望会驱使迷信)......在postgresql.conf:
listen_addresses = 'localhost'
port = 5432
Run Code Online (Sandbox Code Playgroud)
netstat 确认 Postgres 正在侦听该端口:
? ~ netstat -an | grep 5432
tcp4 0 0 127.0.0.1.5432 *.* LISTEN
tcp6 0 0 ::1.5432 *.* LISTEN
d8d7c0e31d5add1d stream 0 0 d8d7c0e326b18a1d 0 0 0 /tmp/.s.PGSQL.5432
Run Code Online (Sandbox Code Playgroud)
所有权限都在套接字文件上设置:
~ ls -l /tmp/.s.PGSQL.5432
srwxrwxrwx 1 fritz wheel 0 12 Jul 13:27 /tmp/.s.PGSQL.5432
Run Code Online (Sandbox Code Playgroud)
/etc/hosts 有一个本地主机条目:
127.0.0.1 localhost
::1 localhost
Run Code Online (Sandbox Code Playgroud)
psql并pg_ctl指向相同的安装:
~ which psql
/usr/local/bin/psql
~ ll /usr/local/bin/psql
/usr/local/bin/psql -> ../Cellar/postgresql/9.4.4/bin/psql
~ which pg_ctl
/usr/local/bin/pg_ctl
~ ll /usr/local/bin/pg_ctl
/usr/local/bin/pg_ctl -> ../Cellar/postgresql/9.4.4/bin/pg_ctl
Run Code Online (Sandbox Code Playgroud)
psql我的系统上的其他地方没有任何名称似乎可以劫持这个过程:
~ sudo find / -name psql
/Applications/pgAdmin3.app/Contents/SharedSupport/psql
/Users/fritz/devtools/phantomjs/src/qt/config.tests/unix/psql
/Users/fritz/Qt/5.3/Src/qtbase/config.tests/unix/psql
/Users/fritz/Qt/5.3/Src/qtbase/src/plugins/sqldrivers/psql
/Users/fritz/Qt/5.3/Src/qtbase/src/sql/drivers/psql
/usr/local/bin/psql
/usr/local/Cellar/postgresql/9.4.4/bin/psql
Run Code Online (Sandbox Code Playgroud)
更新:telnet 连接到 localhost 5432 一段时间,然后断开连接:
~ telnet localhost 5432
Trying ::1...
Connected to localhost.
Escape character is '^]'.
Connection closed by foreign host.
Run Code Online (Sandbox Code Playgroud)
更新2:我使用wireshark 来监视tcp localhost 端口5432。问题是,我不知道我应该看到什么以及结果是否/如何错误。希望有人可以制作此捕获文件。
感谢pgsql-general 上的建议,我用 netcat 检查 TCP/IP,我发现发送到 localhost 的前几个字节被一个旨在保留 Internet 访问审计跟踪的进程吞没了。已卸载,一切正常。
| 归档时间: |
|
| 查看次数: |
2891 次 |
| 最近记录: |