Віддалений доступ до бази даних postgresql


46

Мені потрібно отримати доступ до бази даних postgresql з віддаленої машини на VPS на DigitalOcean під керуванням 12.10 та postgresql 9.1.

Як це зробити? Я помітив порт 5432 закритий, як це відкрити?


1
Виконайте кроки, згадані у javabypatel.blogspot.in/2015/07/… та змініть номер порту, присутній у файлі postgresql.conf. після зміни порту перезапустіть сервер PostgreSQL.
Jayesh

Url розміщений @Jayesh зробив свою справу. Виконуючи вказівки і вдало змусив один із моїх комп'ютерів розвитку підключитися до іншого (від Windows з pgAdmin4 до Ubuntu 18.04 postgresql 10.9)
EAmez

Відповіді:


78

Щоб відкрити порт 5432, відредагуйте /etc/postgresql/9.1/main/postgresql.confта змініть

listen_addresses='localhost'

до

listen_addresses='*'

та перезавантажте СУБД

invoke-rc.d postgresql restart

тепер ви можете підключитися

$ psql -h hostname -U username -d database

якщо ви не можете зареєструватися, вам потрібно надати права доступу до вашої бази даних

Відредагуйте свій

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

і додати

host all all all md5

(Це для широкого відкритого доступу. Для більш жорсткого контролю зверніться до документації pg_hba.conf та відрегулюйте відповідно до своїх потреб).

Після цього вам також потрібно перезавантажити

invoke-rc.d postgresql reload

Мені не потрібно згадувати, що це основна конфігурація, тепер слід подумати про зміну брандмауера та покращення безпеки вашої СУБД.


4
Зокрема, слід включити SSL.
Крейг Рінгер

Гаразд, я спробував це, але коли я намагаюся підключитися за допомогою pgAdmin зі свого комп’ютера, я отримую "Сервер не слухає". Я додав до iptables, і коли я запускаю iptables -L, відображається наступне: ACCEPT tcp - де завгодно tcp dpt: postgresql При перевірці IP та PORT на цьому веб-сайті ( yougetsignal.com/tools/open-ports ), він говорить порт закритий
Øyvind

2
слухає сервер? заїздnetstat -nlt|grep :5432

1
Я б вставив головний рядок більш суворо:host <database> <user> <remote_client_IPaddress>/24 md5
gc5,

Для Postgresql версії 9.5 вам може знадобитися перезапустити сервер до того, як набудуть чинності прослуховування адрес.
Heather92065

26

Це більше не працює, якщо він коли-небудь робив:

розмістити всі всі * md5

Правильні можливі рядки для цього:

розмістити весь весь діапазон 0.0.0.0/0 md5 # ipv4

розмістити всі всі :: 0/0 md5 # ipv6 діапазон

розмістити всі всі md5 #all ip

Джерело


4
Це безумовно зробило трюк. Наведена відповідь точно не спрацювала.
Майк

Будь ласка, висловіть @Mike, що правильно: host all all all md5буде добре? Це правильно? якась проблема безпеки?
Пітер Краус

@peterkrauss Так, хостинг усіх усіх md5 працював на мене. Проблема безпеки? Звичайно, це так, але для того, що я робив, це було просто чудово. (Внутрішня мережа)
Майк

3

Повідомлення "сервер не слухає" зі мною було те, що я не стираю # з архіву postgresql.conf, я маю на увазі:

# liste_addresses = 'localhost'

до:

liste_addresses = '*'

(Перепрошую за мою англійську).


0

Відповідь з найвищою оцінкою та прийнята відповідь серйозно впливає на безпеку. Цей метод вимкнено за замовчуванням з поважних причин.

Краще використовувати переадресацію локального порту за допомогою ssh:

ssh -L local_port:localhost:foreign_port user@server

Запуск переадресації порту:

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

(Змініть місцеві та іноземні порти відповідно до вашої конфігурації).

Тоді ви можете безпосередньо підключитися до бази даних з вашого локального комп'ютера:

psql -U db_user -p local_port -l
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.