Saltar al contenido

No se puede conectar a PostgreSQL local

Nuestro grupo redactor ha pasado mucho tiempo investigando la solución a tus dudas, te brindamos la respuesta así que esperamos serte de gran apoyo.

Solución:

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, hice 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). Puedes usar ls -lAd 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 consultar para ver si es relevante. Esto bien 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


Error de mensajes:

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

Mi intuición es que esto es (nuevamente) una cosa de Mac/OSX: el extremo frontal y el extremo posterior asumen una ubicación diferente para el zócalo del dominio Unix (que funciona como un cita punto).

Lista de Verificación:

  • Está ejecutando postgres: ps aux | grep postgres | grep -v grep debería hacer el truco
  • Donde esta ubicado el enchufe: find / -name .s.PGSQL.5432 -ls (el socket solía estar en /tmp; podría comenzar a buscar allí)
  • incluso si localiza el socket (dominio de Unix), el cliente podría usar una ubicación diferente. (esto sucede si mezcla distribuciones, o si tiene una distribución instalada en algún lugar y tiene otra instalación (por ejemplo, desde la fuente) en otro lugar), con el cliente y el servidor usando diferentes cita direcciones.

Si postgres se está ejecutando y el socket realmente existe, podría usar:

  • psql -h /the/directory/where/the/socket/was/found mydbname

(que intenta conectarse al socket de dominio de Unix)

; ahora debería obtener el indicador de psql: intente d y luego q abandonar. También puedes probar:

  • psql -h localhost mydbname.

(que intenta conectarse a localhost (127.0.0.1)

Si estos intentos fallan debido a una autorización insuficiente, puede modificar pg_hba.conf (y SIGHUP o reiniciar). En este caso: también verifique los registros.

Una pregunta similar: no se puede iniciar Postgres

Nota: si puede acceder al indicador de psql, la solución rápida a este problema es simplemente cambiar su config/database.ymlagregar:

host: localhost

o podrías intentar agregar:

host: /the/directory/where/the/socket/was/found

En mi caso, host: /tmp

Intenta desinstalar la gema pg (gem uninstall pg) y luego reinstalar, si usa el paquete, entonces bundle installdemás gem install pg. Además, asegúrese de que la ruta seleccione la versión correcta: Lion tiene una versión de posgresql (las versiones anteriores no la tenían) y puede estar en la ruta antes de su versión instalada localmente (por ejemplo, MacPorts, homebrew).

En mi caso: instalación casera de postgresql, postgresql actualizado, rieles, etc. y luego recibí este error. Desinstalar y reinstalar la gema pg lo hizo por mí.

Comentarios y puntuaciones del artículo

Te invitamos a añadir valor a nuestro contenido añadiendo tu experiencia en las ilustraciones.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *