it-swarm-eu.dev

Jak se připojit ke vzdálené PostgreSQL databázi na Ubuntu pomocí pgAdmin3?

Snažím se nastavit PostgreSQL databázi na počítači Ubuntu. Chtěl bych mít přístup k němu pomocí pgAdmin3 ze vzdáleného počítače. Jak to nastavím?

Nainstaloval jsem PostgreSQL databázi na Ubuntu pomocí:

Sudo apt-get install postgresql

V mém /etc/postgresql/9.1/main/pg_hba.conf mám tento řádek:

Host    all    all    all    password

takže by měl přijímat připojení ze všech IPv4 adres a hesla by měla být zasílána v jasném textu (je to z důvodu vývoje).

Pokud spustím tento příkaz a uvidím, které služby běží:

Sudo netstat -tulpn

Vidím tyto řádky, které ukazují, že PostgreSQL přijímá připojení na výchozím portu:

tcp    0    0    127.0.0.1:5432    0.0.0.0:*    LISTEN
3561/postgres

Když se pokusím připojit k tomuto serveru PostgreSQL ze vzdáleného počítače ve stejné místní síti, zobrazí se tato chybová zpráva:

Server neposlouchá

Server nepřijímá připojení: knihovna připojení se hlásí

se nemohlo připojit k serveru: Připojení odmítnuto Je server spuštěn na hostiteli "10.0.1.7" a přijímá připojení TCP/IP na portu 5432?

Jako uživatelské jméno a bez hesla jsem použil postgres. Ale také jsem se pokusil s heslem postgres. Na místním serveru se mohu přihlásit pomocí:

Sudo -u postgres psql postgres

Jak se mohu připojit k PostgreSQL databázi spuštěné na Ubuntu ze vzdáleného počítače pomocí pgAdmin3?

22
Jonas

Řádek ve vaší zprávě netstat ukazuje, že databáze poslouchá pouze na localhost: 5432 (127.0.0.1) pro příchozí připojení tcp.

Proto Recv-Q Send-Q Local Address   Foreign Address  State   PID/Program name
tcp        0      0 127.0.0.1:5432  0.0.0.0:*        LISTEN  3561/postgres

Může tedy přijímat pouze místní připojení tcp bez ohledu na to, jaká oprávnění jste zadali v pg_hba.conf. pg_hba.conf určuje pouze povolená připojení, ale neurčuje, jaká rozhraní bude vaše služba poslouchat.

Adresy, na které server poslouchá, jsou specifikovány pomocí listen_addresses GUC v postgresql.conf . Pokud chcete, aby server poslouchal vzdálená připojení, měli byste určit ip (y), které chcete poslouchat, nebo * pro poslech všech dostupných rozhraní na hostiteli.

Chcete-li, aby váš server postgresql poslouchal na všech rozhraních hostitele, měli byste mít v postgresql.conf následující řádek:

listen_addresses = '*'
25
dbenhur