Próbujesz połączyć się z PostgreSQL na localhost
używając skryptu działającego na twoim komputerze, ale nie ma tam działającego serwera PostgreSQL.
Aby to zadziałało, musisz ssh do zdalnego serwera, a następnie uruchomić tam swój skrypt Pythona, gdzie serwer PostgreSQL jest "lokalny" względem skryptu Pythona.
(Dlatego uruchamianie psql
działa - ponieważ używasz go na zdalnym serwerze , gdzie PostgreSQL jest "lokalny" względem psql
).
Alternatywnie możesz:
-
Użyj tunelu SSH, aby przekierować port PostgreSQL z komputera lokalnego na zdalny; lub
-
Połącz się bezpośrednio przez TCP/IP ze zdalnym serwerem PostgreSQL, używając jego nazwy hosta lub adresu IP, po włączeniu połączeń zdalnych na serwerze.
Zwróć uwagę, że po prostu wstawiasz adres IP lub nazwę hosta serwera w ciągu połączenia zamiast localhost
nie będzie działać chyba że skonfigurujesz także serwer do akceptacji połączeń zdalnych . Musisz ustawić listen_addresses
aby nasłuchiwać połączeń nielokalnych, dodaj wymagane reguły zapory, ustaw pg_hba.conf
aby zezwolić na połączenia z komputerów zdalnych, a najlepiej skonfigurować SSL. Wszystko to jest opisane w rozdziale Uwierzytelnianie klienta w podręczniku użytkownika PostgreSQL.
Prawdopodobnie okaże się, że tunel SSH jest prostszy i łatwiejszy do zrozumienia.