无法连接到本地PostgreSQL

我设法让我的本地开发环境。

我所有的本地Rails应用程序现在都出现错误:

PGError could not connect to server: Permission denied Is the server running locally and accepting connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"? 

我不知道是什么原因造成的。

在search解决scheme时,我更新了所有捆绑的gem,更新的系统gem,更新的MacPorts。 没有快乐。

其他人在从OSX Leopard升级到Lion时报告了这个问题,因为混淆了Postgres应该使用的版本(即OSX版本或MacPorts版本)。 我已经运行了好几个月的Lion,所以现在看来​​这似乎很奇怪。

如果没有先了解问题是什么,我不愿意惹得太多。 我怎样才能有条不紊地进行debugging?

我怎样才能确定我的系统上有多less个PostgreSQL版本,正在访问哪一个版本,以及它的位置? 如果错误的PostgreSQL被使用,我该如何解决这个问题?

对不起noob问题。 我仍然在学习如何工作! 感谢任何指针。

编辑

根据以下build议和意见进行一些更新。

我试图运行pg_lsclusters返回一个command not found错误。

然后,我试图本地化我的pg_hba.conf文件,发现这三个示例文件:

 /opt/local/share/postgresql84/pg_hba.conf.sample /opt/local/var/macports/software/postgresql84/8.4.7_0/opt/local/share/postgresql84/pg_hba.conf.sample /usr/share/postgresql/pg_hba.conf.sample 

所以我假设安装了3个PSQL版本? Macports,OSX默认和???。

然后,我search了launchctl启动脚本ps -ef | grep postgres ps -ef | grep postgres返回

 0 56 1 0 11:41AM ?? 0:00.02 /opt/local/bin/daemondo --label=postgresql84-server --start-cmd /opt/local/etc/LaunchDaemons/org.macports.postgresql84-server/postgresql84-server.wrapper start ; --stop-cmd /opt/local/etc/LaunchDaemons/org.macports.postgresql84-server/postgresql84-server.wrapper stop ; --restart-cmd /opt/local/etc/LaunchDaemons/org.macports.postgresql84-server/postgresql84-server.wrapper restart ; --pid=none 500 372 1 0 11:42AM ?? 0:00.17 /opt/local/lib/postgresql84/bin/postgres -D /opt/local/var/db/postgresql84/defaultdb 500 766 372 0 11:43AM ?? 0:00.37 postgres: writer process 500 767 372 0 11:43AM ?? 0:00.24 postgres: wal writer process 500 768 372 0 11:43AM ?? 0:00.16 postgres: autovacuum launcher process 500 769 372 0 11:43AM ?? 0:00.08 postgres: stats collector process 501 4497 1016 0 12:36PM ttys000 0:00.00 grep postgres 

我已经在http://pastebin.com/Gj5TpP62上发布了postgresql84-server.wrapper的内容。

我试图运行port load postgresql184-server但收到错误Error: Port postgresql184-server not found

我仍然很困惑如何解决这个问题,并欣赏任何“傻瓜”指针。

谢谢!

EDIT2

这个问题是在daemondo出现问题之后才开始的。 我的本地Rails应用程序崩溃了“无法finddaemondo gem”的应用程序错误。 然后,我经历了一系列软件包更新,gem更新,端口更新和brew更新以尝试find问题。

这个错误可能是daemondo的问题吗?

这看起来像一个文件权限错误。 Unix域套接字是文件,拥有与其他任何用户相同的权限。 它看起来好像试图访问数据库的OSX用户没有文件权限来访问套接字文件。 为了证实这一点,我已经在Ubuntu和psql上做了一些testing,试图产生相同的错误(包含在下面)。

您需要检查套接字文件及其目录/var/var/pgsql_socket 。 您的Rails应用程序(OSX用户)必须对这些目录具有执行(x)权限(最好授予所有人权限),并且套接字应具有完全权限(wrx)。 您可以使用ls -lAd <file>来检查这些ls -lAd <file> ,如果它们中的任何一个是符号链接,您需要检查链接指向的文件或目录。

您可以自己更改目录上的权限,但套接字是由postgresql.conf中的postgresql.confconfiguration的。 这可以在与pg_hba.conf相同的目录中find(你必须找出哪一个)。 一旦你设置了权限,你将需要重新启动postgresql。

 # postgresql.conf should contain... unix_socket_directory = '/var/run/postgresql' # dont worry if yours is different #unix_socket_group = '' # default is fine here #unix_socket_permissions = 0777 # check this one and uncomment if necessary. 

编辑:

我已经做了一个快速search谷歌,你可能希望看看是否是相对的。 这可能会导致任何尝试find您的configuration文件失败。

http://www.postgresqlformac.com/server/howto_edit_postgresql_confi.html


错误消息:

在pg_hba.conf中找不到用户

 psql: FATAL: no pg_hba.conf entry for host "[local]", user "couling", database "main", SSL off 

用户失败的密码auth:

 psql: FATAL: password authentication failed for user "couling" 

缺lessunix套接字文件:

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

Unix套接字存在,但服务器不听它。

 psql: could not connect to server: Connection refused Is the server running locally and accepting connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"? 

unix套接字文件上的文件权限不正确

 psql: could not connect to server: Permission denied Is the server running locally and accepting connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"? 

我的直觉是,这又是一个mac / OSX事物:前端和后端为unix域套接字(作为集合点起作用)承担不同的位置。

清单:

  • 是postgres运行: ps aux | grep postgres | grep -v grep ps aux | grep postgres | grep -v grep ps aux | grep postgres | grep -v grep应该做的伎俩
  • 这个套接字位于哪里: find / -name .s.PGSQL.5432 -ls (这个套接字曾经在/ tmp中;你可以开始在那里查看)
  • 即使您find(unix域)套接字,客户端也可以使用其他位置。 (如果你混合使用发行版,或者你的发行版安装在某个地方,而另一个地方安装了另一个发行版(如源)),客户端和服务器使用不同的rendez-vous地址, 则会发生这种情况

如果postgres正在运行,并且套接字实际存在,则可以使用:

  • psql -h /the/directory/where/the/socket/was/found mydbname

(它试图连接到unix域套接字)

; 你现在应该得到psql提示:尝试\d然后\q退出。 你也可以尝试:

  • psql -h localhost mydbname

(它试图连接到本地主机(127.0.0.1)

如果这些尝试因授权不足而失败,则可以更改pg_hba.conf(和SIGHUP或重新启动)在这种情况下:也请检查日志。

一个类似的问题: 无法让Postgres开始

注意:如果你能进入psql提示符,这个问题的快速解决方法就是改变你的config/database.yml ,添加:

host: localhost

或者你可以尝试添加:

host: /the/directory/where/the/socket/was/found

在我的情况下, host: /tmp

尝试卸载pg gem( gem uninstall pg ),然后重新安装 – 如果使用bundler,然后bundle install ,否则gem install pg 。 另外,请确保pathselect正确的版本:Lion有一个posgresql版本(以前的版本没有),它可能在你本地安装的版本(如MacPorts,自制软件)之前的path。

在我的情况下:自制安装postgresql,更新postgresql,导轨等,然后得到这个错误。 卸载并重新安装pg gem为我做了。

套接字文件的位置在编译时被烧入gem。 因此你需要重build你的PGgem。

 gem pristine pg # or bundle exec gem pristine pg 

这应该解决这个特定的问题。

如果您收到类似的错误:

 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.5432"? 

这可能会诀窍(它为我做的):

 initdb /usr/local/var/postgres -E utf8 

如果您不使用OSX / Brew,指定的目录应该不同。

注意:这不是上面看到的确切的错误消息,但此线程是该错误消息的第一个结果。

什么解决这个错误,我是在postgres目录中删除一个名为postmaster.pid的文件。 请使用以下链接查看我的问题/答案,以获得一步一步的指导。 我的问题与文件权限无关:

psql:无法连接到服务器:没有这样的文件或目录(Mac OS X)

回答这个问题的人虽然掉了很多游戏,谢谢! 我提高了所有我能

这就是我如何解决这个错误信息,部分基于wildplasser的答案。

 find / -name .s.PGSQL.5432 -ls 2> /dev/null => ... /tmp/.s.PGSQL.5432 

所以,有我的套接字或任何东西,但客户端在:

 /var/run/postgresql/.s.PGSQL.5432 

所以很简单的做一个到/tmp/.s.PGSQL.5432的符号链接:

 sudo ln -s /tmp/.s.PGSQL.5432 /var/run/postgresql/.s.PGSQL.5432 

希望这有助于任何人。 似乎有点错,但嘿,它的作品!

升级到新的postgres后,我开始得到这个 – 我没有意识到我拥有数据文件。

首先我试图启动postgres服务器:

 postgres -D /usr/local/var/postgres 

这是我看到这个错误

 FATAL: database files are incompatible with server DETAIL: The data directory was initialized by PostgreSQL version 9.0, which is not compatible with this version 9.3.5. 

所以然后我发现这个答案在SO – 有关不兼容性错误: https : //serverfault.com/questions/342626/how-do-i-upgrade-postgresl-database-incompatibility-error

这是固定的

 mv /usr/local/var/postgres /usr/local/var/postgres.old initdb -D /usr/local/var/postgres 

只是确认我在PSQL和Django上有类似的问题,

看起来像是因为我的psql服务器没有正确closures,postmaster.pid文件仍然存在(应该在自动closures时自动删除)在我的postgres文件夹中。

删除这一切都好

我得到了这个相同的错误(事实certificate,这是postmaster.pid错误。这是我得到postgres和再次运行( 信贷给里卡多Burillo的修复 ):

 $ rm /usr/local/var/postgres/postmaster.pid $ pg_resetxlog -f /usr/local/var/postgres 

尝试使用rails的postgresql时,我有类似的问题。 更新我的Gemfile以使用新版本的gem pg为我解决这个问题。 (gem版本0.16.0的作品)。 在Gemfile中使用:

 gem 'pg', '0.16.0' 

然后运行以下更新gem

 bundle install --without production bundle update bundle install 

我的Macbook电池耗尽后,今天发生在我身上。 我认为这可能是由于不正确的关机造成的。 所有你需要做的事情,如我的是删除postmaster.pid

导航到该文件夹

 cd /usr/local/var/postgres 

检查postmaster.pid是否存在

 ls 

删除postmaster.pid

 rm postmaster.pid 

在我的情况下,以前的解决scheme都不是很好。 而不是使用套接字,您可以在Railsconfiguration文件中使用TCP host + port号。 所以在database.yml文件中只需添加两行,如下所示:

 ... adapter: postgresql encoding: unicode pool: 5 host: localhost port: 5432 

这解决了我的问题:)

在我使用这个修复之前:

 sudo mkdir /var/run/postgresql sudo ln -s /tmp/.s.PGSQL.5432 /var/run/postgresql/.s.PGSQL.5432 

但每次重新启动/tmp/.s.PGSQL.5432后,我不得不重复这些命令。 解决scheme的作品,但它是可怕的,所以更好的只是修改Rails数据库configuration文件:)

我读了很多关于这个错误的主题,对我来说解决scheme是简单地重新启动postgres:

 sudo service postgresql restart 

这里没有提到。

 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.5432"? 

我search一下解决scheme。 所以,这个也解决了我的问题(reinit db):

 rm -r /usr/local/var/postgres initdb /usr/local/var/postgres -E utf8 pg_ctl -D /usr/local/var/postgres -l logfile start 

我使用OS X 10.11.3和brew。

MacOSX在这里。 使用自制软件将我的postresql安装从9.1之前版本升级到9.1.2之后,我遇到了同样的问题。 (顺便提一下,请记住在升级之前使用pg_dump来转储数据库,9.1之前的数据库是不兼容的。)同样的问题,相同的错误消息。

卸载pg gem为我做了诀窍。 其实我不得不做很多跳舞来发现这个问题。 首先,我做了一个全球性的gem卸载,清除所有的旧gem甲板(有几个)。 然后我从我的Gemfile中删除了pg,重新绑定了,恢复了pg的引用,并且再次反弹了。

之后,它就像一个魅力。

你好,世界 :)
对我来说,最好但奇怪的做法是做下一件事。

1)下载postgres93.app或其他版本。 将此应用程序添加到/ Applications /文件夹。

2)将一行(命令添加到文件.bash_profile (位于我的主目录中):

  export PATH = / Applications / Postgres93.app / Contents / MacOS / bin /:$ PATH 

这是来自Postgres93.app psql的path。 每次启动控制台时,该行(命令)都会运行。

3)/Applications/文件夹启动Postgres93.app 。 它启动一个本地服务器(端口是“5432”,主机是“localhost”)。

4)所有这些操作后,我很高兴运行$ createuser -SRDP user_name和其他命令,并看到它的工作! Postgres93.app可以在每次系统启动时运行。

5)另外,如果你想看到你的数据库graphics你应该安装PG Commander.app 。 将postgres数据库视为漂亮的数据表是一种很好的方法

当然,这只对本地服务器有帮助。 如果这个指示帮助那些面对这个问题的人,我会很高兴。

当我使用Django设置Posgtres时出现了这个错误,我使用Back Track,并且安装了Postgres。 我认为设置是问题。 我通过完全删除它,然后像这样重新安装。

 sudo apt-get remove postgresql sudo apt-get purge postgresql 

现在运行:

 apt-get --purge remove postgresql\* 

从你的系统中删除所有的PostgreSQL。 只是清除postgres包是不够的,因为它只是一个空的元包。

一旦所有的PostgreSQL包已经被删除,运行:

 rm -r /etc/postgresql/ rm -r /etc/postgresql-common/ rm -r /var/lib/postgresql/ userdel -r postgres groupdel postgres 

你现在应该能够:

 apt-get install postgresql 

我有这个问题困扰着我,并进一步调查(运行rake db:setup ),我看到rails试图连接到以前使用的postgres实例 – 一个存储在envvariables作为DATABASE_URL。

修复: unset DATABASE_URL

来源: https : //stackoverflow.com/a/17420624/2577622

我尝试了解决这个问题的大部分解决scheme,但无法工作。

我跑了lsof -P | grep ':5432' | awk '{print $2}' lsof -P | grep ':5432' | awk '{print $2}' lsof -P | grep ':5432' | awk '{print $2}'显示正在运行的进程的PID。 但是我不能用kill -9 <pid>杀死它。

当我运行pkill postgresql ,进程终于停止了。 希望这可以帮助。

 gem uninstall pg 

在OS X上用自制软件:

 gem install pg -- --with-pg-config=/usr/local/bin/pg_config