我在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看起来正确?
答案 0 :(得分:150)
/etc/services
只是建议性的,它是众所周知的端口列表。这并不意味着任何东西实际上都在该端口上运行,或者命名服务将在该端口上运行。
在PostgreSQL的情况下,如果可用的话,通常使用端口5432。如果不是,大多数安装人员将选择下一个空闲端口,通常是5433。
您可以使用netstat
工具查看实际运行的内容(在OS X,Windows和Linux上可用,命令行语法在所有三个方面都有所不同)。
在Mac OS X系统上,由于不同的PostgreSQL软件包 - Apple内置于操作系统的PostgreSQL的古老版本,Postgres.app,Homebrew,Macports,EnterpriseDB安装程序等等,这进一步复杂化。
最终发生的事情是用户安装Pg并从一个包装启动服务器,但使用来自不同包装的psql
和libpq
客户端。通常,当他们运行Postgres.app或自制程序Pg并与操作系统附带的psql
连接时,会发生这种情况。这些不仅有时会有不同的默认端口,但Mac OS X附带的Pg具有不同的默认的unix套接字路径,因此即使服务器在同一端口上运行,它也不会听同一个unix socket。
大多数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相关联的psql
和libpq
是PATH
上首先找到的内容。具体细节取决于您的Mac OS X版本以及您安装的Pg软件包。我没有使用Mac,如果没有比现有的更多时间,就不能提供更多的细节。
答案 1 :(得分:20)
在OSX上快速回答,设置您的环境变量。
导出PGHOST = localhost
导出PGPORT = 5432
或者你需要什么。
答案 2 :(得分:11)
Postgres的默认端口通常配置为:
sudo vi /<path to your installation>/data/postgresql.conf
在Ubuntu上,这可能是:
sudo vi /<path to your installation>/main/postgresql.conf
在此档案中搜索port
。
答案 3 :(得分:7)
似乎发生这种情况的最常见原因之一是如果您在不停止现有安装服务的情况下安装新版本的PostgreSQL。这也是我特别头疼的问题。在安装或升级之前,尤其是在OS X上并使用Enterprise DB中的单击安装程序之前,请确保在继续之前检查旧安装的状态。
答案 4 :(得分:5)
感谢@a_horse_with_no_name的comment,我在Pg_env.sh中将我的PGPORT定义更改为5432。这解决了我的问题。我不知道为什么postgres最初在5432托管服务时将其设置为5433。
答案 5 :(得分:2)
我也遇到了这个问题,结果我有两个同时运行的postgres服务器。我卸载其中一个并将端口更改回5432并且现在正常工作。
答案 6 :(得分:0)
对于我 Mac OS High Sierra 中的 PgAdmin 4 ,点击服务器下的 PostrgreSQL10 数据库左列,然后是属性标签,在连接下显示 5433 作为端口。 (我不知道为什么,因为我在安装过程中选择了5432)。无论如何,我点击属性标签下的修改图标,将其更改为 5432 ,保存,这就解决了问题。去图。