To naprawdę wygląda na błąd uprawnień do pliku. Gniazda domeny uniksowej są plikami i mają uprawnienia użytkownika tak samo jak inne. Wygląda na to, że użytkownik OSX próbujący uzyskać dostęp do bazy danych nie ma uprawnień dostępu do pliku gniazda. Aby to potwierdzić, wykonałem kilka testów na Ubuntu i psql, aby spróbować wygenerować ten sam błąd (opisany poniżej).
Musisz sprawdzić uprawnienia do pliku gniazda i jego katalogów /var
i /var/pgsql_socket
. Twoja aplikacja Railsowa (użytkownik OSX) musi mieć uprawnienia do wykonywania (x) w tych katalogach (najlepiej przyznawać uprawnienia wszystkim), a gniazdo powinno mieć pełne uprawnienia (wrx). Możesz użyć ls -lAd <file>
aby je sprawdzić, a jeśli którykolwiek z nich jest dowiązaniem symbolicznym, musisz sprawdzić plik lub zmienić adres, na który wskazuje dowiązanie.
Możesz samodzielnie zmienić uprawnienia do katalogu, ale gniazdo jest konfigurowane przez postgres w postgresql.conf
. Można go znaleźć w tym samym katalogu, co pg_hba.conf
(Musisz dowiedzieć się, który). Po ustawieniu uprawnień konieczne będzie ponowne uruchomienie 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.
EDYTUJ:
Zrobiłem szybkie wyszukiwanie w Google, które możesz chcieć sprawdzić, aby sprawdzić, czy jest to istotne. Może to spowodować każdą próbę find
Twój plik konfiguracyjny nie działa.
http://www.postgresqlformac.com/server/howto_edit_postgresql_confi.html
Komunikaty o błędach:
Nie znaleziono użytkownika w pg_hba.conf
psql: FATAL: no pg_hba.conf entry for host "[local]", user "couling", database "main", SSL off
Autoryzacja hasła użytkownika nie powiodła się:
psql: FATAL: password authentication failed for user "couling"
Brakujący plik gniazda uniksowego:
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"?
Gniazdo Unix istnieje, ale serwer go nie słucha.
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"?
Złe uprawnienia do pliku gniazda uniksowego :
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"?