正如我在标题中所说,我已经安装了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
答案 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,这可能会解决问题。