我已经通过MacPorts安装了PostgreSQL,但无法访问它

时间:2010-09-30 14:55:10

标签: postgresql installation macports

正如我在标题中所说,我已经安装了PostgreSQL usind MacPorts,但无法访问它。

安装过程是

$ sudo port install postgresql83-server
$ sudo mkdir -p /opt/local/var/db/postgresql83/webcraft
$ sudo chown postgres:postgres /opt/local/var/db/postgresql83/webcraft
$ sudo su postgres -c '/opt/local/lib/postgresql83/bin/initdb -D /opt/local/var/db/postgresql83/webcraft'
$ sudo launchctl load -w /Library/LaunchDaemons/org.macports.postgresql83-server.plist

我的路径是

/opt/local/lib/postgresql83/bin:/opt/local/lib/mysql5/bin:/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin

我尝试使用psql client连接服务器

$ 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"?

这是一些信息

$ ps ax | grep postgres | grep -v grep
   52   ??  Ss     0:00.00 /opt/local/bin/daemondo --label=postgresql83-server --start-cmd /opt/local/etc/LaunchDaemons/org.macports.postgresql83-server/postgresql83-server.wrapper start ; --stop-cmd /opt/local/etc/LaunchDaemons/org.macports.postgresql83-server/postgresql83-server.wrapper stop ; --restart-cmd /opt/local/etc/LaunchDaemons/org.macports.postgresql83-server/postgresql83-server.wrapper restart ; --pid=none

6 个答案:

答案 0 :(得分:10)

你试过跑吗:

which psql

我想psql仍然引用/usr/bin/psql,而psql的macports版本后缀为版本号,在你的情况下为psql83。您可以将psql别名为psql83,作为一种简单的解决方法。更好的是更改默认值:

sudo port select --set postgresql postgresql83

这将做正确的路由。

答案 1 :(得分:7)

对此有一个非常简单的解决方案,但在我看来并没有很好地记录:

MacPorts鼓励安装他们的*_select端口来管理可能的多个版本的软件(比如你想要同时使用Postgres93和Postgres94)。这是一个很棒的功能,但它增加了一个额外的步骤,由于某些原因很少在文档中提到:

$ sudo port install postgresql94-server

稍后尝试启动服务器的尝试次数很多..

$ sudo port install postgresql_select
$ sudo port select postgresql
Available versions for postgresql:
    none (active)
    postgresql94

那好不好!

$ sudo port select postgresql postgresql94
$ sudo port load postgresql94-server

你在开玩笑吧。现在它正在运行?

简单地安装Postgres并不能完全设置符号链接以使其易于运行。安装postrgresql_select可为MacPorts提供通过port select执行此操作所需的信息。一旦选择了您选择的有效版本,通过luanchctl启动Posgres服务器就像port load postgresqlXX-server一样简单。

答案 2 :(得分:4)

我知道这是一个非常晚的答案,并没有回答你的完整问题,但是如果你是超级用户,launchctl会显示不同的结果。

尝试做:

sudo launchctl list | grep postgres

答案 3 :(得分:3)

我在MacBook Pro上遇到了完全相同的问题。我在这里发布这篇博客文章和所有评论后,我可以解决问题:

http://benscheirman.com/2010/06/installing-postgresql-for-rails-on-mac-os-x

问题是postgres没有真正运行。在我对自己的机器进行端口扫描并意识到端口5432上没有运行任何东西后,我意识到了这一点。

我创建了一个小脚本“start_pg_server.sh”:

#!/bin/sh
sudo su postgres -c 'pg_ctl start -D /opt/local/var/db/postgresql83/defaultdb/'

执行此脚本后服务器正在运行,我可以用pgAdmin连接我。我还能用rake db:create和rake db:migrate运行我的ruby东西。

答案 4 :(得分:2)

使用Timemachine恢复后,我遇到了同样的问题。 原因是权限被破坏,postgres无法写入pid文件。 运行这个解决了它:

sudo chown -R postgres:postgres /opt/local/var/db/postgresql91/
sudo port unload postgresql91-server
sudo port load postgresql91-server

答案 5 :(得分:0)

您是否有机会使用/ usr / bin / false的shell创建postgres用户?如果是这样,启动脚本将无法工作,因为它使用su来传递通过shell发送的命令。

如果您确实将其设置为/ usr / bin / false,请尝试将其更改为/ bin / bash,这可能会解决问题。

相关问题