是5433还是5432?

我已经在 OSX 上安装了 postgreql

$ 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被皮洛占领,5432被分配到 pg。我可以连接

psql -p 5432

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

471041 次浏览

/etc/services只是一个建议,它是一个著名港口的列表。这并不意味着在该端口上实际运行任何东西,也不意味着命名的服务将在该端口上运行。

在 PostgreSQL 的例子中,如果端口5432可用,通常会使用它。如果不是,大多数安装程序会选择下一个自由端口,通常是5433。

您可以看到使用 netstat工具实际运行的内容(可以在 OS X、 Windows 和 Linux 上使用,命令行语法在这三者之间变化)。

在 Mac OS X 系统上,由于各种 PostgreSQL 软件包的混乱,这种情况变得更加复杂——苹果的旧版 PostgreSQL 内置在操作系统中,Postgre.app,Homebrew,Macports,EnterpriseDB 安装程序等等。

最终发生的情况是,用户安装 Pg 并从一个包启动服务器,但使用来自不同包的 psqllibpq客户机。通常情况下,当他们运行 Postgre.app 或自制 Pg 并连接到操作系统附带的 psql时,就会发生这种情况。这些端口不仅有不同的默认端口,而且 Mac OS X 附带的 Pg 有不同的 默认的 unix 套接字路径,所以即使服务器运行在相同的端口上,它也不会监听相同的 unix 套接字。

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

您还可以指定一个 unix 套接字目录; 检查您希望连接到的 PostgreSQL 实例的 unix_socket_directories设置,并使用 psql -h指定它,例如 psql -h /tmp

一个更简洁的解决方案是修正系统 PATH,这样与实际运行的 PostgreSQL 相关联的 psqllibpq就是在 PATH上首先找到的。具体细节取决于您的 MacOSX 版本以及您安装了哪些 Pg 包。我不使用 Mac,如果不花比现在更多的时间,我不能提供更多的细节。

由于 @ a _ horse _ with _ no _ name评论,我将 PGPORT 定义更改为 pg _ env 中的5432。嘘。解决了我的问题。我不知道为什么 postgres 最初将它设置为5433,而当时它是在5432托管服务。

Postgres 的默认端口通常配置如下:

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

在 Ubuntu 上,这可能是:

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

在这个文件中搜索 port

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

快速回答 OSX,设置您的环境变量。

>export PGHOST=localhost


>export PGPORT=5432

或者你需要的任何东西。

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

对于我在 Mac OS High Sierra上的 PgAdmin 4,单击左边列中 服务器下的 PostrgreSQL10数据库,然后在 物业选项卡中,显示 5433作为 联系下的端口。(我不知道为什么,因为我在安装期间选择了5432)。无论如何,我点击 物业标签下的 剪辑图标,改为 5432,保存,这就解决了问题。想想看。