sql >> Base de Datos >  >> RDS >> PostgreSQL

No se puede conectar a PostgreSQL local

Esto realmente parece un error de permisos de archivo. Los sockets de dominio Unix son archivos y tienen permisos de usuario como cualquier otro. Parece que el usuario de OSX que intenta acceder a la base de datos no tiene permisos de archivo para acceder al archivo de socket. Para confirmar esto, realicé algunas pruebas en Ubuntu y psql para intentar generar el mismo error (incluido a continuación).

Debe verificar los permisos en el archivo de socket y sus directorios /var y /var/pgsql_socket . Su aplicación Rails (usuario de OSX) debe tener permisos de ejecución (x) en estos directorios (preferiblemente otorgar permisos a todos) y el socket debe tener permisos completos (wrx). Puede usar ls -lAd <file> para verificarlos, y si alguno de ellos es un enlace simbólico, debe verificar el archivo o dirigir los puntos del enlace.

Puede cambiar los permisos en el directorio por sí mismo, pero el socket está configurado por postgres en postgresql.conf . Esto se puede encontrar en el mismo directorio que pg_hba.conf (Tendrás que averiguar cuál). Una vez que haya configurado los permisos, deberá reiniciar postgresql.

# postgresql.conf should contain...
unix_socket_directory = '/var/run/postgresql'       # dont worry if yours is different
#unix_socket_group = ''                             # default is fine here
#unix_socket_permissions = 0777                     # check this one and uncomment if necessary.

EDITAR:

Hice una búsqueda rápida en google que tal vez desee ver si es relevante. Esto podría resultar en cualquier intento de find su archivo de configuración está fallando.

http://www.postgresqlformac.com/server/howto_edit_postgresql_confi.html

Mensajes de error:

Usuario no encontrado en pg_hba.conf

psql: FATAL:  no pg_hba.conf entry for host "[local]", user "couling", database "main", SSL off

Autenticación de contraseña de usuario fallida:

psql: FATAL:  password authentication failed for user "couling"

Falta el archivo de socket de Unix:

psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

El socket Unix existe, pero el servidor no lo escucha.

psql: could not connect to server: Connection refused
    Is the server running locally and accepting
    connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

Permisos de archivo incorrectos en un archivo de socket de Unix :

psql: could not connect to server: Permission denied
    Is the server running locally and accepting
    connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?