Dette ligner virkelig en filtilladelsesfejl. Unix domæne sockets er filer og har brugertilladelser ligesom alle andre. Det ser ud til, at OSX-brugeren, der forsøger at få adgang til databasen, ikke har filtilladelser til at få adgang til socket-filen. For at bekræfte dette har jeg lavet nogle test på Ubuntu og psql for at prøve at generere den samme fejl (inkluderet nedenfor).
Du skal kontrollere tilladelserne på socket-filen og dens mapper /var
og /var/pgsql_socket
. Din Rails-app (OSX-bruger) skal have udførelsestilladelser (x) på disse mapper (giv helst alle tilladelser), og socket skal have fulde tilladelser (wrx). Du kan bruge ls -lAd <file>
for at tjekke disse, og hvis nogen af dem er et symbollink, skal du tjekke filen eller dir, linket peger på.
Du kan selv ændre tilladelserne på dir, men soklen er konfigureret af postgres i postgresql.conf
. Dette kan findes i samme mappe som pg_hba.conf
(Du skal finde ud af hvilken). Når du har indstillet tilladelserne, skal du genstarte 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.
EDIT:
Jeg har lavet en hurtig søgning på google, som du måske ønsker at se nærmere på for at se, om den er relevant. Dette kan meget vel resultere i ethvert forsøg på at find
din konfigurationsfil fejler.
http://www.postgresqlformac.com/server/howto_edit_postgresql_confi.html
Fejlmeddelelser:
Bruger ikke fundet i pg_hba.conf
psql: FATAL: no pg_hba.conf entry for host "[local]", user "couling", database "main", SSL off
Bruger mislykket adgangskodegodkendelse:
psql: FATAL: password authentication failed for user "couling"
Manglende unix-socket-fil:
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"?
Unix-socket findes, men serveren lytter ikke til det.
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"?
Dårlige filtilladelser på unix-socket-fil :
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"?