开发者

I have installed PostgreSQL via MacPorts, but cannot access it

开发者 https://www.devze.com 2023-01-18 18:16 出处:网络
As I said in title, I\'ve installed PostgreSQL usind MacPorts, but cannot access it. The installation process was

As I said in title, I've installed PostgreSQL usind MacPorts, but cannot access it.

The installation process was

$ 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

My PATH is

/opt/local/lib/postgresql83/bin:/opt/local/lib/mysql5/bin:/opt/local/bin:/opt/local/sbin:/u开发者_开发百科sr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin

I try to connect the server using 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"?

Here is some info

$ 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


Did you try running:

which psql

I imagine psql is still referencing /usr/bin/psql, and the macports version of psql is suffixed with the version number, in your case psql83. You can alias psql to psql83 as a simple workaround. Better would be to change the default:

sudo port select --set postgresql postgresql83

That will do the proper routing.


There is a very easy solution to this, but it's not well documented in my opinion:

MacPorts encourages installing their *_select ports to manage potentially multiple versions of software (say you want Postgres93 and Postgres94 at the same time). It's a great feature, but it adds an extra step that is for some reason rarely mentioned in the docs:

$ sudo port install postgresql94-server

Many failed attempts at starting the server later..

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

Well that can't be good!

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

You're kidding me. Now it's running?

Simply installing Postgres doesn't fully setup symlinks to make it easily runnable. Installing postrgresql_select gives MacPorts the information it needs to do that via port select. Once you've selected the active version of your choice, starting the Posgres server via luanchctl is as easy as port load postgresqlXX-server.


I know this is a very late answer and doesn't answer your full question, but launchctl will show different results depending on if you are superuser or not.

Try doing:

sudo launchctl list | grep postgres


I had exactly the same problem on my MacBook Pro. I could resolve the problem after I rode this blog post here and all the comments:

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

The Problem is that postgres is not really running. I recognized this after I did a port scan to my own machine and realized that nothing is running on Port 5432.

I created a small script "start_pg_server.sh":

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

after executing this script the server was running and I could connect me with pgAdmin. I was also able to run my ruby stuff with rake db:create and rake db:migrate.


After I restored using Timemachine I had the same problem. The reason was that the permissions were mangled and postgres could not write the pid file. Running this solved it for me:

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


Did you by any chance create your postgres user with a shell of /usr/bin/false? If so, the startup script won't work because it uses su which passes commands you send it through the shell.

If you did set it to /usr/bin/false, try changing it to /bin/bash and that might fix things.

0

精彩评论

暂无评论...
验证码 换一张
取 消