PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Nie można połączyć się z lokalnym PostgreSQL

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. postgresql migracja JSON do JSONB

  2. Zainstaluj PostgreSQL na Ubuntu 18.04

  3. Biblioteka nie załadowana:/usr/local/opt/readline/lib/libreadline.6.2.dylib

  4. Serwer PostgreSQL nie zamykał się w systemie Lion (Mac OS 10.7)

  5. Uruchom zapytanie z LIMIT/OFFSET, a także uzyskaj całkowitą liczbę wierszy