PostgreSQL端口混乱5433或5432?


128

我已经在OSX上安装了postgresql。当我运行psql时,我得到

$ psql
psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/tmp/.s.PGSQL.5433"?

但是,来自/ etc / services

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 DBMS

5433被pyrrho占据,5432被分配给pg。我可以与

psql -p 5432

但是为什么psql认为它是5433,默认情况下如何使psql在正确的位置显示?


Answers:


187

/etc/services仅是建议性的,它是知名港口的清单。这并不意味着该端口上实际上正在运行任何东西,也不意味着命名服务将在该端口上运行。

在PostgreSQL的情况下,如果可用,通常使用端口5432。如果不是,大多数安装程序将选择下一个可用端口,通常为5433。

您可以使用该netstat工具查看实际运行的内容(在OS X,Windows和Linux上可用,并且命令行语法在这三个方面各不相同)。

在Mac OS X系统上,由于各种PostgreSQL软件包的可怕混乱而使情况更加复杂-苹果内置在OS中的古老版本的PostgreSQL,Postgres.app,Homebrew,Macports,EnterpriseDB安装程序等。

最终发生的事情是,用户从一个包装中安装Pg并启动服务器,但从另一个包装中使用psqland libpq客户端。通常,这是在他们运行Postgres.app或自制软件Pg并psql与OS附带的软件连接时发生的。这些有时不仅具有不同的默认端口,而且Mac OS X随附的Pg具有不同的默认unix套接字路径,因此,即使服务器在同一端口上运行,它也不会监听相同的unix套接字。

大多数Mac用户仅通过将tcp / ip与一起使用来解决此问题psql -h localhost。如果需要,您还可以指定端口,例如psql -h localhost -p 5433。您可能正在运行多个PostgreSQL实例,因此请确保使用select version()和连接到正确的实例SHOW data_directory;

您还可以指定unix套接字目录。检查unix_socket_directories你要连接并指定与PostgreSQL实例的设置psql -h,例如psql -h /tmp

较干净的解决方案是对系统进行更正,PATH以使与psql以及libpq与实际运行的PostgreSQL相关联的东西首先出现在上PATH。具体细节取决于您的Mac OS X版本以及已安装的Pg软件包。我不使用Mac,也不能在没有提供比当前更多时间的情况下提供更多细节。


23

在OSX上快速回答,设置环境变量。

>export PGHOST=localhost

>export PGPORT=5432

或您需要的任何东西。


16

Postgres的默认端口通常在以下位置配置:

sudo vi /<path to your installation>/data/postgresql.conf

在Ubuntu上,这可能是:

sudo vi /<path to your installation>/main/postgresql.conf

port在此文件中搜索。


在带有BigSQL发行版的Mac OSX上,它位于:~/PostgreSQL/data/pg96
Shane


7

似乎发生这种情况的最常见原因之一是,如果您在不停止现有安装服务的情况下安装了新版本的PostgreSQL。这也是我的特别头痛。在安装或升级之前,尤其是在OS X上,以及使用Enterprise DB的一键式安装程序之前,请确保在继续之前检查旧安装的状态。


是的,我们已经安装了9.4时安装了postgresql-9.5,所以9.5选择5433作为默认端口
vikingsteve,

我已经使用5432和5433了很长时间,我已经看过5436,但不知道这是不是只是某个人具有创造力,或者是在不同的OS上默认设置。
Deil

3

我也遇到了这个问题,最终我同时运行了两个postgres服务器。我卸载了其中一个并将端口改回5432,现在可以正常工作。


2

对我而言,在Mac OS High Sierra上的PgAdmin 4中,单击左栏中服务器”下的PostrgreSQL10数据库,然后单击“ 属性”选项卡,在“ 连接”下显示5433作为端口。(我不知道为什么,因为我在安装过程中选择了5432)。无论如何,我单击了“ 属性”选项卡下的“ 编辑”图标,将其更改为5432,已保存,并解决了该问题。去搞清楚。


所要做的就是允许您连接到已经在5432上运行的服务器,这就是您这样做之后可以连接的原因。如正确说明的那样,该服务器在您的每次安装上都在5432上运行。
Shane
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.