Postgresql veritabanına uzaktan erişim


46

12.10 ve postgresql 9.1 çalışan DigitalOcean'da VPS üzerindeki uzak bir makineden postgresql veritabanına erişmem gerekiyor.

Bunu nasıl yaparım? 5432 numaralı bağlantı noktasının kapalı olduğunu fark ettim, bunu nasıl açarım?


1
Javabypatel.blogspot.in/2015/07/… de belirtilen adımları izleyin ve postgresql.conf dosyasında mevcut olan port numarasını değiştirin. port değiştirdikten sonra PostgreSQL sunucusunu yeniden başlatın.
Jayesh

Url @Jayesh tarafından yayınlanan hile yaptı. Talimatlarımı izledim ve başarılı bir şekilde benim geliştirme bilgisayarlarımdan biri diğerine bağlandı (Windows'ta pgAdmin4 ile Ubuntu 18.04 postgresql 10.9 arası)
EAmez

Yanıtlar:


78

Liman 5432 düzenlemeyi sizin açmak için /etc/postgresql/9.1/main/postgresql.confve değişim

listen_addresses='localhost'

için

listen_addresses='*'

ve DBMS'nizi yeniden başlatın

invoke-rc.d postgresql restart

şimdi bağlanabilirsiniz

$ psql -h hostname -U username -d database

Kendinizi doğrulayamıyorsanız, kullanıcılarınıza veritabanınıza erişim hakları vermeniz gerekir.

Düzenleyin

/etc/postgresql/9.1/main/pg_hba.conf

ve Ekle

host all all all md5

(Bu geniş bir açık erişim içindir. Daha sıkı kontrol için, pg_hba.conf belgelerine bakın ve ihtiyaçlarınıza göre ayarlayın).

Bundan sonra ayrıca bir yeniden yüklemeye ihtiyacınız var

invoke-rc.d postgresql reload

Bunun temel bir yapılandırma olduğunu söylememe gerek yok, şimdi güvenlik duvarınızı değiştirmeyi ve DBMS'nizin güvenliğini artırmayı düşünmelisiniz.


4
Özellikle, SSL'yi etkinleştirmelisiniz.
Craig Ringer

Tamam, bunu denedim, ancak bilgisayarımdan pgAdmin kullanarak bağlanmaya çalıştığımda, "Sunucu dinlemiyor" alıyorum. Iptables'a ekledim ve iptables -L'yi çalıştırdığımda aşağıdakiler gösteriliyor: ACCEPT tcp - her yerde her yerde tcp dpt: postgresql Bu sitede IP ve PORT kontrol edilirken ( yougetsignal.com/tools/open-ports ) yazıyor liman kapalı
Øyvind

2
sunucu dinliyor mu ile kontrol edinnetstat -nlt|grep :5432

1
Ana bilgisayar sırasını daha katı bir şekilde host <database> <user> <remote_client_IPaddress>/24 md5
eklerdim

Postgresql 9.5 sürümü için, listen_adreslerinin etkili olması için sunucuyu yeniden başlatmanız gerekebilir.
Heather92065

26

Bu daha önce işe yaramazsa, artık işe yaramaz:

hepsini barındır * md5

Bunun için doğru çizgiler:

tüm 0.0.0.0/0 md5 # ipv4 ürün yelpazesine ev sahipliği yaptı

hepsini barındıran :: 0/0 md5 # ipv6 range

tüm hepsini barındır md5 #all ip

Kaynak


4
Bu kesinlikle hile yaptı. Yukarıdaki cevap kesinlikle işe yaramadı.
Mike

Lütfen @Mike doğru olanı ifade edin: host all all all md5iyi çalışır mı? Doğru mu Herhangi bir güvenlik problemi var mı?
Peter Krauss

@peterkrauss Evet, benim için çalıştığım md5'in hepsini barındırın. Güvenlik sorunu? Tabii ki öyle, ama yaptığım şey için gayet iyiydi. (Dahili ağ)
Mike,

3

"Sunucu dinlemiyor" mesajı için, başıma gelen, postgresql.conf arşivindeki # işaretini silmediğim anlamına geliyordu:

# Listen_addresses = 'localhost'

için:

listen_addresses = '*'

(İngilizcem için üzgünüm).


0

En yüksek oyu alan ve kabul edilen cevabın ciddi güvenlik uygulamaları var. Bu yöntem, iyi nedenlerle varsayılan olarak devre dışıdır.

Yerel bağlantı noktası yönlendirmeyi daha iyi kullanmak ssh:

ssh -L local_port:localhost:foreign_port user@server

Port yönlendirmeyi başlat:

ssh -L 5432:localhost:5432 user@your-server.com
#or
ssh -L 5432:127.0.0.1:5432 user@your-server.com

(Yapılandırmanıza uyacak şekilde yerel ve yabancı bağlantı noktalarını değiştirin).

Ardından, veritabanına doğrudan yerel bilgisayarınızdan bağlanabilirsiniz:

psql -U db_user -p local_port -l
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.