Opravdu to vypadá na chybu oprávnění souboru. Unixové doménové sokety jsou soubory a mají uživatelská oprávnění stejně jako všechny ostatní. Vypadá to, že uživatel OSX, který se pokouší o přístup k databázi, nemá oprávnění k souboru pro přístup k souboru soketu. Abych to potvrdil, provedl jsem několik testů na Ubuntu a psql, abych se pokusil vygenerovat stejnou chybu (zahrnuto níže).
Musíte zkontrolovat oprávnění k souboru soketu a jeho adresářům /var
a /var/pgsql_socket
. Vaše aplikace Rails (uživatel OSX) musí mít oprávnění ke spouštění (x) v těchto adresářích (nejlépe udělte oprávnění všem) a soket by měl mít plná oprávnění (wrx). Můžete použít ls -lAd <file>
Chcete-li je zkontrolovat, a pokud je některý z nich symbolický odkaz, musíte zkontrolovat soubor nebo přesměrovat odkaz, na který odkazuje.
Oprávnění k adresáři si můžete změnit sami, ale soket konfiguruje postgres v postgresql.conf
. To lze nalézt ve stejném adresáři jako pg_hba.conf
(Budete muset přijít na to, který). Jakmile nastavíte oprávnění, budete muset restartovat 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.
UPRAVIT:
Provedl jsem rychlé vyhledávání na google, do kterého se možná budete chtít podívat, abyste zjistili, zda je relaventní. To může vést k jakémukoli pokusu find
váš konfigurační soubor selže.
http://www.postgresqlformac.com/server/howto_edit_postgresql_confi.html
Chybové zprávy:
Uživatel nebyl nalezen v pg_hba.conf
psql: FATAL: no pg_hba.conf entry for host "[local]", user "couling", database "main", SSL off
Uživatel se nezdařilo ověření hesla:
psql: FATAL: password authentication failed for user "couling"
Chybí soubor soketu 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"?
Unixový soket existuje, ale server ho neposlouchá.
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"?
Špatná oprávnění k souboru v souboru soketu 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"?