2011-11-30 15 views
10

cerveza instalar PostgreSQLNo se puede obtener Postgres comenzó

Inicializar ...

[~] initdb 
The files belonging to this database system will be owned by user "pma". 
This user must also own the server process. 

The database cluster will be initialized with locales 
    COLLATE: C 
    CTYPE: UTF-8 
    MESSAGES: C 
    MONETARY: C 
    NUMERIC: C 
    TIME:  C 
The default database encoding has accordingly been set to UTF8. 
initdb: could not find suitable text search configuration for locale UTF-8 
The default text search configuration will be set to "simple". 

creating directory /Users/pma/.pgdata ... ok 
creating subdirectories ... ok 
selecting default max_connections ... 20 
selecting default shared_buffers ... 1600kB 
creating configuration files ... ok 
creating template1 database in /Users/pma/.pgdata/base/1 ... ok 
initializing pg_authid ... ok 
initializing dependencies ... ok 
creating system views ... ok 
loading system objects' descriptions ... ok 
creating collations ... ok 
creating conversions ... ok 
creating dictionaries ... ok 
setting privileges on built-in objects ... ok 
creating information schema ... ok 
loading PL/pgSQL server-side language ... ok 
vacuuming database template1 ... ok 
copying template1 to template0 ... ok 
copying template1 to postgres ... ok 

WARNING: enabling "trust" authentication for local connections 
You can change this by editing pg_hba.conf or using the -A option the 
next time you run initdb. 

Success. You can now start the database server using: 

    postgres -D /Users/pma/.pgdata 
or 
    pg_ctl -D /Users/pma/.pgdata -l logfile start 

inicio ...

[~] pg_ctl start 
server starting 
[~] LOG: database system was shut down at 2011-11-30 22:41:57 HKT 
LOG: database system is ready to accept connections 
LOG: autovacuum launcher started 

Hasta aquí todo bien ... CreateDB ....

[~] createdb test 
createdb: could not connect to database postgres: 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"? 

... ¿ahora qué?

+0

Entonces, ¿cuáles son sus permisos en '/ var/pgsql_socket /' y también en '/ var/pgsql_socket/.s.PGSQL.5432'? Sí dice "permiso denegado" en el mensaje de error. – derobert

+0

Me da el mismo error si dejo el servidor, chmod 777/var/pgsql_socket, inicie el servidor – fivetwentysix

+0

... ¿y el archivo? Si eso no resulta útil, también verifique el pg_hba.conf para ver si su usuario está autorizado. Y también podrías intentar ver de qué viene el permiso negado. – derobert

Respuesta

19

podría ser la toma de unixdomain se encuentra en otro lugar, por ejemplo/tmp

Trate de usar una bandera -h localhost o ya sea con/tmp:

  • prueba localhost createdb -H, o
  • createdb -h/tmp test

(el distintivo -h/--hostname toma normalmente un nombre de host como argumento, pero también aceptará un nombre de directorio, especificando la ubicación del unix- socket de dominio)

link to related topic

+1

Esto diagnosticó el problema, que es genial. En otras palabras, puedo hacer un 'psql -h \ var \ pgsql_socket' pero' psql' por sí solo da el error original del OP. Pero no soluciona mi problema con, por ejemplo, 'rake db: migrate' en Ruby on Rails que lanza' psql' internamente y falla por este motivo. ¿Cómo lo arreglo para que 'psql' se ejecute correctamente sin argumentos? –

+1

@DominicSayers: este problema ha surgido más de una vez.En otra pregunta con el mismo problema, alguien agregó un cambio relevante al archivo de configuración de rieles. A ver si puedo averiguarlo ... Allí está: http://stackoverflow.com/a/8482546/905902 – wildplasser

+0

gracias, eso me ayudó a solucionarlo. Para mí, comenzó a suceder cuando actualicé a PostgreSQL 9.2.2. Antes de eso (9.2.1) estaba bien. –

0

¿Tiene los permisos correctos para que su usuario cree una base de datos? Si no se puede crear/modificar usuario por:

Crear usuario

> su postgres 
> createuser 
    ... Set user permission. 

también comprobar su pg_hba.conf que tiene los permisos correctos para su usuario.

2

Nota de instalar Postgres con cerveza en el león de montaña en junio de 2015: plsq y createdb están buscando para el socket en/var/pgsql_socket, pero postgres está creando en/tmp. "plsq -h localhost" trabaja muy bien, pero para hacer una solución permanente:

sudo mkdir /var/pgsql_socket sudo chown <user> /var/pgsql_socket

Entonces edición /usr/local/var/postgres/postgresql.conf y establezca unix_socket_directories = '/ var/pgsql_socket '

Cuestiones relacionadas