Pokud je vaše služba Postgres v provozu bez jakékoli chyby nebo při spouštění služby Postgres nedošlo k chybě a přesto se vám zobrazuje zmíněná chyba, postupujte takto
Krok 1:Spuštění pg_lsclusters
zobrazí seznam všech postgres clusterů běžících na vašem zařízení
např.:
Ver Cluster Port Status Owner Data directory Log file
9.6 main 5432 online postgres /var/lib/postgresql/9.6/main /var/log/postgresql/postgresql-9.6-main.log
s největší pravděpodobností bude stav ve vašem případě dolů. Zkuste restartovat clustery a službu Postgres
Krok 2:Restartujte pg_ctlcluster
#format is pg_ctlcluster <version> <cluster> <action>
sudo pg_ctlcluster 9.6 main start
#restart postgresql service
sudo service postgresql restart
Krok 3:Krok 2 selhal a vyvolal chybu
Pokud tento proces není úspěšný, vyvolá chybu. Moje chyba byla (Protokol chyb můžete vidět na /var/log/postgresql/postgresql-9.6-main.log
)
FATAL: could not access private key file "/etc/ssl/private/ssl-cert-snakeoil.key": Permission denied
Try adding `postgres` user to the group `ssl-cert`
Krok 4:Zkontrolujte vlastnictví postgres
Ujistěte se, že postgres
je vlastníkem /var/lib/postgresql/version_no/main
např.:sudo chown postgres -R /var/lib/postgresql/9.6/main/
Krok 5:Zkontrolujte, zda uživatel Postgres patří do skupiny uživatelů ssl-cert
Stalo se mi a ukázalo se, že jsem omylem odstranil uživatele Postgres ze skupiny "ssl-cert". Spuštěním níže uvedeného kódu vyřešte problém se skupinou uživatelů a opravte oprávnění
#set user to group back with
sudo gpasswd -a postgres ssl-cert
# Fixed ownership and mode
sudo chown root:ssl-cert /etc/ssl/private/ssl-cert-snakeoil.key
sudo chmod 740 /etc/ssl/private/ssl-cert-snakeoil.key
sudo service postgresql restart
Pravděpodobně máte nainstalovaných více verzí PostgreSQL. Pokud ano, druhá verze má pravděpodobně výchozí hodnotu unix_socket_directories = '/tmp/'
ale libpq
vaše psql
je spojen s pravděpodobně výchozím nastavením /var/run/postgresql/
.
Zkuste
psql -h /tmp
Pokud to funguje, problém je výše uvedený. Můžete přidat export PGHOST=/tmp
na váš .bashrc
pro změnu výchozího nastavení lokálně pro vašeho uživatele.
Pokud to není práce, ujistěte se, že PostgreSQL skutečně běží
ps aux |grep postgres
a pokud ne, začněte. Jak záleží na tom, jak jste to nainstalovali, ale bude to přes service
nebo systemctl
příkaz(y), pokud jste nainstalovali pomocí balíčků.
psql:nelze se připojit k serveru:Žádný takový soubor nebo adresář Běží server lokálně a přijímá připojení na soketu domény Unix"/var/run/postgresql/.s.PGSQL.5432"?
Tato chyba obecně znamená, že server neběží. Na základě dpkg -l
výstup a vlákno komentářů, bylo to kvůli postgresql-9.5
hlavní balíček je nějakým způsobem odinstalován. Protože odinstalace nebyla volána pomocí --purge
možnost na dpkg
, data a konfigurační soubory tam stále jsou, takže apt-get install postgresql-9.5
může problém vyřešit.