但是,从/ etc / services
@H_403_1@postgresql 5432/udp # Postgresql Database postgresql 5432/tcp # Postgresql Database # Tom Lane <tgl@sss.pgh.pa.us> pyrrho 5433/tcp # Pyrrho DBMS pyrrho 5433/udp # Pyrrho DBMS5433被pyrrho占据,5432被赋予pg。我可以连接
@H_403_1@psql -p 5432在Postgresql的情况下,通常使用端口5432(如果可用)。如果不是,大多数安装程序将选择下一个空闲端口,通常为5433。
您可以使用netstat工具(在OS X,Windows和Linux上可用,命令行语法在所有三个中都有所不同)可以看到实际运行的是什么。
这在Mac OS X系统上由不同的Postgresql软件包 – 苹果的Postgresql内置于操作系统,Postgres.app,Homebrew,Macports,EnterpriseDB安装程序等等的可怕混乱进一步复杂。
发生的事情是,用户安装Pg并从一个包装启动服务器,但使用来自不同包装的psql和libpq客户端。通常,这发生在他们运行Postgres.app或homebrew Pg,并与操作系统附带的psql连接。不仅这些有时具有不同的默认端口,但是Mac OS X附带的Pg具有不同的默认unix套接字路径,因此即使服务器在同一端口上运行,也不会侦听同一个unix套接字。
大多数Mac用户只需使用tcp / ip与psql -h localhost解决此问题。您还可以指定端口(如果需要),例如psql -h localhost -p 5433.您可能有多个Postgresql实例运行,请确保使用select version()和SHOW data_directory;连接到正确的端口。
你也可以指定一个unix套接字目录;检查要连接的Postgresql实例的unix_socket_directories设置,并使用psql -h,egpsql -h / tmp指定。
一个更清洁的解决方案是更正您的系统PATH,以便与您实际运行的Postgresql相关的psql和libpq是在PATH上首先找到的。其详细信息取决于您的Mac OS X版本和您安装的Pg包。我不使用Mac,不能提供更多的细节在那一边没有花费更多的时间比目前可用。