自制Postgres坏了


72

我使用自制软件在Mac(10.10.1 / Yosemite)上安装了Postgresql 9.4.0。这是行不通的。

我已经在〜/ Library / LaunchAgents中创建了到/usr/local/opt/postgresql/homebrew.mxcl.postgresql.plist的软链接。

如果我尝试手动加载postgres,则会收到消息“操作正在进行中”

> launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
/usr/local/Cellar/postgresql/9.4.0/homebrew.mxcl.postgresql.plist: Operation already in progress

但是postgres似乎没有在运行。

> ps auxw | grep post
billmcn           670   0.0  0.0  2424272    452 s000  R+   10:12PM   0:00.01 grep post

而且我无法与命令行客户端连接。

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

据我所知,我已经尝试了讨论此问题的其他 Stackoverflow线程上建议的所有修复程序。特别:

  • 我已经卸载并重新安装了postgres和随附的Ruby gem。我的机器上没有postgres 8.0版本。
  • 我已验证psql客户端程序是Homebrew安装的9.4.0版本,而不是Mac系统二进制文件。
  • 我已经验证了/usr/local/var/postgres/postmaster.pid不存在。
  • 我已经重启了机器。

我以前确实有Homebrew postgres在这台机器上工作。我认为它的坏处是从版本8升级到版本9,但我不确定。

我没有需要保留的任何数据库。我愿意从postgres开始做起。我只需要立即开始工作即可。有任何想法吗?


问题似乎出在/ usr / local / var / postgres目录上。这是我的var目录无法正常工作时的样子。

ll /usr/local/var/
drwxr-xr-x  3 billmcn  admin  102 Dec 20 12:44 cache
drwxr--r--  2 root     admin   68 Dec 29 21:37 postgres

(whoami =“ billmcn”)

我删除了/ usr / local / var / postgres,卸载并重新安装了postgres,现在看起来像这样。

ll /usr/local/var/
drwxr-xr-x   3 billmcn  admin  102 Dec 20 12:44 cache
drwx------  23 billmcn  admin  782 Dec 30 10:51 postgres

不知道它是如何进入这种状态的,因为我不记得这个目录的权限了,但是没关系。现在可以使用了。

Answers:


114

我在新安装的优胜美地上使用自制软件安装postgres时遇到了同样的问题。

首先,我的brew配置如下所示:

HOMEBREW_VERSION: 0.9.5
ORIGIN: https://github.com/Homebrew/homebrew
HEAD: 9f6926265f8e4be7cc80dfe9042f2cd3c1e8dc9e
Last commit: 64 minutes ago
HOMEBREW_PREFIX: /usr/local
HOMEBREW_CELLAR: /usr/local/Cellar
CPU: quad-core 64-bit sandybridge
OS X: 10.10.1-x86_64
Xcode: 6.1.1
Clang: 6.0 build 600
X11: N/A
System Ruby: 2.0.0-481
Perl: /usr/bin/perl
Python: /usr/bin/python
Ruby: ~/.rvm/rubies/ruby-2.1.1/bin/ruby

我注意到的第一件事是我没有对的写许可/usr/local/var/postgres。这很容易更改发行,sudo chown -R `whoami` /usr/local/var/postgres然后我重新安装了postgresql并做了

cat /usr/local/var/postgres/server.log

显示:

postgres cannot access the server configuration file "/usr/local/var/postgres/postgresql.conf": No such file or directory

因此,我删除了目录/usr/local/var/postgres并发出了初始化数据库的命令。

initdb -D /usr/local/var/postgres/

这似乎已经解决了问题,而postgres运行良好。


我遵循了这些步骤,但是执行initdb命令后,我得到:“无法访问目录” / usr / local / var / postgres”:权限被拒绝。同样,这是在您列出的步骤之后,包括在运行initd之前直接删除该目录。
戴夫·芒格

系统通常不依赖这些东西。如果执行“ ls -l / usr / local / var | grep postgres”,是否将您的用户设置为目录的所有者?
汤姆·亨里克·阿德兰

在看到您的评论之前,我只是放弃并切换到Macports。而且,它现在工作正常。
Dave Munger

2
我的天啊!非常感谢你。自2个小时以来,我一直在为此奋斗。我认为Homebrew应该简化了安装过程。
fro_oo 2015年

1
我希望我可以+5。
Geoffrey Burdett

47

我有同样的问题。此处的主要问题是,安装的initdb步骤将创建具有根所有权的目录,而不是Mac上的用户。要解决此问题:

运行前创建数据目录initdb并设置权限0700

rm -rf /usr/local/var/postgres  # in case this is not your first try
mkdir /usr/local/var/postgres
chmod 0700 /usr/local/var/postgres

然后运行initdb,它将尊重数据目录的权限。

initdb -D /usr/local/var/postgres

对于咧嘴笑,创建一个以您的用户命名的测试数据库:

createdb `whoami`

登录进行测试:

psql

我去rm -rf /usr/local/var/postgres和或sudo rm -rf /usr/local/var/postgres都删除了postgres目录,然后去手动添加了自己的新目录,我得到了mkdir: /usr/local/var/postgres: File existspsql仍然说no such file or directory。语境对我的情况:stackoverflow.com/questions/31088325/...
JBK

14

在尝试使用Homebrew安装postgresql之后,我得到了:

Warning: postgresql-9.5.2 already installed, it's just not linked

所以我尝试了:

brew link postgresql

并得到此错误:

Linking /usr/local/Cellar/postgresql/9.5.2... 
Error: Could not symlink share/man/man3/SPI_connect.3
/usr/local/share/man/man3 is not writable.

这似乎是写许可问题,所以我这样做了:

sudo chown -R `whoami` /usr/local/share/man/

它之所以成功,是因为我能够做到(没有错误):

brew link postgresql

9

请注意,它们是Homebrew的github上处理此问题的线程: https //github.com/Homebrew/homebrew/issues/35240


我有一个类似的问题。詹姆斯的回答帮助我解决了这个问题。但是然后我遇到了jbk提到的问题(删除了/ usr / local / var / postgres之后,就一直在重新创建它)。

问题是,如果您创建了符号链接:

ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents

并启动了该过程:

launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

您应该先将其卸载:

launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

在运行James的命令之前。

rm -rf /usr/local/var/postgres  # in case this is not your first try
mkdir /usr/local/var/postgres
chmod 0700 /usr/local/var/postgres

此外,如果像我一样,如果您有一个管理自制软件的管理员用户和一个将使用pgsl进行开发的普通用户,则应该以超级用户身份运行James命令:

sudo -s

并且应该将postgres目录的所有权授予您的开发用户:

chown my-dev-user /usr/local/var/postgres

以下命令以dev用户身份运行,然后应正确填充目录:

createdb `whoami`

运行:

psql -l

这样的操作后,应该在postgre中向您显示表和用户权限。

希望这可以帮助。


1
太神奇了!谢谢塞德里克。我在权限上也遇到了同样的问题。
thesayhey 2015年

3

如果有人从以前的版本升级,请不要忘记:

brew postgresql-upgrade-database

可以通过将现有数据库升级到将postgres升级到的版本来解决该问题。


1

为了后代,我遇到了这个问题,想指出对我有用的东西。

我在High Sierra上运行postgres 11.2。我最近从升级了Postgres 10 brew postgresql-upgrade-database

我不断收到错误消息psql: could not connect to server: No such file or directory,并指出了server.logis another postmaster (PID 5894) running in data directory "/usr/local/var/postgres"?

我尝试了几种解决方案,包括重新启动计算机,删除postmaster.pid,使用brew services restart postgres,但无济于事。我最终偶然发现了解决方案:

brew unlink postgresql && brew link postgresql

不知道为什么这样做,但主要将其放在此处,以便将来自己参考!将东西扔在墙上直到粘住!


0

检查@leo_chaz_maltrait以修复错误,该错误Could not symlink share/man/man3/SPI_connect.3 可能显示的另一个错误是:

Error: Could not symlink lib/pkgconfig/libecpg.pc

sudo chown -R `whoami` /usr/local/lib/pkgconfig

brew link postgresql

0

我最近遇到了一个问题,当我升级了某些brew更新/升级(主要是python版本等)时就开始出现了问题。

brew uninstall postgres
brew install postgresql@9.5
echo 'export PATH="/usr/local/opt/postgresql@9.5/bin:$PATH"' > ~/.zshrc
# you may need > ~/.bashrc if you use bash

我需要pg_dump,pg_restore等,以便获得我所做的工作

brew install libpq

启动服务

brew services start postgresql@9.5

从这里开始,我希望一切都能正常工作,但是仍然所有的rails db命令都给出了服务器未运行的错误。最后一点是拼图的缺失部分,它终于为我解决了。

gem uninstall pg
gem install pg -v 0.20.0 # which was set in Gemfile
# could also just probably do bundle install instead.
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.