PgAdmin3 kullanarak Ubuntu'daki uzak bir PostgreSQL veritabanına nasıl bağlanılır?


22

Bir Ubuntu makinesinde bir PostgreSQL veritabanı kurmaya çalışıyorum. Uzak bir makineden pgAdmin3 kullanarak erişmek mümkün olmak istiyorum. Bunu nasıl ayarlarım?

PostgreSQL veritabanını Ubuntu’ya aşağıdakileri kullanarak kurdum:

sudo apt-get install postgresql

Benim /etc/postgresql/9.1/main/pg_hba.confiçinde bu çizgiyi var:

host    all    all    all    password

bu nedenle tüm IPv4 adreslerinden gelen bağlantıları kabul etmeli ve şifreler açık metin ile gönderilmelidir (bu, geliştirme nedenleriyle).

Hangi servislerin çalıştığını görmek için bu komutu çalıştırırsam:

sudo netstat -tulpn

PostgreSQL'in varsayılan bağlantı noktasında bağlantıları kabul ettiğini gösteren bu satırları görebiliyorum:

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

Bu PostgreSQL sunucusuna aynı yerel ağdaki uzak bir bilgisayardan bağlanmaya çalıştığımda şu hata mesajını alıyorum:

Sunucu dinlemiyor

Sunucu bağlantıları kabul etmiyor: bağlantı kütüphanesi raporları

sunucuya bağlanamadı: Bağlantı reddedildi Sunucu "10.0.1.7" ana bilgisayarında çalışıyor mu ve 5432 numaralı bağlantı noktasında TCP / IP bağlantılarını kabul ediyor mu?

postgresKullanıcı adı ve şifre kullanmıyorum . Ama aynı zamanda postgresşifre olarak da denedim . Yerel sunucuda şunu kullanarak giriş yapabilirim:

sudo -u postgres psql postgres

Ubuntu'da çalışan bir PostgreSQL veritabanına pgAdmin3 kullanarak uzak bir makineden nasıl bağlanabilirim?

Yanıtlar:


25

Netstat raporunuzdaki satır, veri tabanının sadece tcp bağlantıları için localhost: 5432 (127.0.0.1) 'ı dinlediğini gösterir.

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

Bu nedenle, yalnızca pg_hba.conf dosyasında belirttiğiniz izinlerden bağımsız olarak yerel tcp bağlantılarını kabul edebilir. pg_hba.conf yalnızca izin verilen bağlantıları belirtir, ancak hizmetinizin hangi arayüzleri dinleyeceğini belirtmez.

Sunucunun dinlediği adresler, postgresql.conf içindeki listen_addresses GUC ile belirtilir . Sunucunun uzak bağlantıları dinlemesini istiyorsanız, dinlemesini istediğiniz ip (ler) i veya *ana bilgisayardaki tüm kullanılabilir arabirimleri dinlemesini istediğiniz ipuçlarını belirtmelisiniz .

Postgresql sunucunuzun ana bilgisayardaki tüm arayüzleri dinlemesini sağlamak için, postgresql.conf dosyasında şu satırın olması gerekir:

listen_addresses = '*'

ama zaten belirttiğiniz alliçinde pg_hba.conftüm ip adreslerinden connetions kabul etmelidir böylece ... dosyaya.
Jonas

Belki daha net bir şekilde söyleyebilirdim. pg_hba veritabanının ne dinleyeceğini belirtmez, sadece hangi protokol / db / user / remote-addr bağlantılarına izin verilir.
dbenhur

Tamam, peki bunu nasıl düzeltebilirim? önerin var mı?
Jonas

1
listen_addresses = '*'postgresql.conf dosyasına bir satır koyarak ve sunucunuzu yeniden başlatarak düzeltin .
dbenhur

Teşekkürler, bu bu sorunu çözdü. Şimdi sadece varsayılan şifre ile ilgili sorunlar var :(
Jonas
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.