Detta ser verkligen ut som ett filbehörighetsfel. Unix-domänsockets är filer och har användarbehörigheter precis som alla andra. Det ser ut som om OSX-användaren som försöker komma åt databasen inte har filbehörighet att komma åt socket-filen. För att bekräfta detta har jag gjort några tester på Ubuntu och psql för att försöka generera samma fel (ingår nedan).
Du måste kontrollera behörigheterna för socketfilen och dess kataloger /var
och /var/pgsql_socket
. Din Rails-app (OSX-användare) måste ha exekveringsbehörighet (x) på dessa kataloger (ge helst alla behörigheter) och socket bör ha fullständiga behörigheter (wrx). Du kan använda ls -lAd <file>
för att kontrollera dessa, och om någon av dem är en symbollänk måste du kontrollera filen eller dir som länken pekar på.
Du kan ändra behörigheterna för dir själv, men socket konfigureras av postgres i postgresql.conf
. Detta kan hittas i samma katalog som pg_hba.conf
(Du måste ta reda på vilken). När du har ställt in behörigheterna måste du starta om 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:
Jag har gjort en snabb sökning på google som du kanske vill titta på för att se om det är relevant. Detta kan mycket väl leda till alla försök att find
din konfigurationsfil misslyckas.
http://www.postgresqlformac.com/server/howto_edit_postgresql_confi.html
Felmeddelanden:
Användaren hittades inte i pg_hba.conf
psql: FATAL: no pg_hba.conf entry for host "[local]", user "couling", database "main", SSL off
Användaren misslyckades med lösenordsautentisering:
psql: FATAL: password authentication failed for user "couling"
Unix-socketfil saknas:
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 finns, men servern lyssnar inte på den.
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åliga filbehörigheter för unix-socketfil :
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"?