我已经安装在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是由皮浪占领,5432被分配给PG。 我可以连接
psql -p 5432
但为什么PSQL认为这是5433以及如何使默认情况下在正确的地方PSQL看?
/etc/services
是唯一的咨询,这是众所周知的端口的列表。 这并不意味着任何东西实际上是在该端口上或已命名的服务将运行在该端口上运行。
在PostgreSQL的情况下,这是典型的为使用端口5432(如果可用)。 如果不是,多数的安装程序会选择一个空闲端口,通常是5433。
你可以看到什么是用实际运行netstat
工具(在OS X,Windows和Linux上使用,可在所有三个命令行语法不同)。
这是由不同的PostgreSQL包的乌七八糟在Mac OS X系统更加复杂 - 苹果公司的PostgreSQL的古代版内置于OS,Postgres.app,自制,MacPorts的,EnterpriseDB公司的安装,等等等等。
什么最终发生的是,用户安装PG,并开始从一个包装一台服务器,但使用psql
和libpq
从不同的包装客户端。 通常,这时候他们正在运行Postgres.app或自制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套接字目录; 检查unix_socket_directories
要连接到并指定与PostgreSQL实例的设置psql -h
,例如psql -h /tmp
。
一个清洁的解决方案是正确的系统PATH
,以便psql
和libpq
与你实际运行PostgreSQL的关联是什么首次发现的PATH
。 那细节取决于您的Mac OS X版本和PG包,你已经安装了。 我不使用Mac和没有花费比现有更多的时间不能提供在那边更多的细节。
Postgres的默认端口是常用配置:
sudo vi /<path to your installation>/data/postgresql.conf
在Ubuntu上,这可能是:
sudo vi /<path to your installation>/main/postgresql.conf
搜索port
在此文件中。
看来,最常见的原因,这种情况发生一个是,如果你安装PostgreSQL的新版本而无需停止现有安装的服务。 这是我特别头疼了。 安装或升级,特别是在OS X和使用点击安装程序从Enterprise DB之前,请确保您在继续之前检查旧的安装状态。
由于@a_horse_with_no_name的评论 ,我改变了我的PGPORT定义5432在pg_env.sh。 这解决了这个问题对我来说。 我不知道为什么的Postgres设置为5433开始,当它在5432托管服务。
我就遇到了这个问题,以及,它结束了,我有两个Postgres的服务器在同一时间运行。 我卸载了其中的一个,改变了口回5432,现在工作得很好。
对于我的pgAdmin 4在Mac OS高塞拉利昂 ,点击服务器下PostrgreSQL10数据库在左侧栏中,然后在属性选项卡上,显示5433作为下连接的端口。 (我不知道为什么,因为我安装过程中选择5432)。 无论如何,我点击属性选项卡下的编辑图标,更改到5432,保存,并解决了这个问题。 去搞清楚。