Мені потрібно отримати доступ до бази даних postgresql з віддаленої машини на VPS на DigitalOcean під керуванням 12.10 та postgresql 9.1.
Як це зробити? Я помітив порт 5432 закритий, як це відкрити?
Мені потрібно отримати доступ до бази даних postgresql з віддаленої машини на VPS на DigitalOcean під керуванням 12.10 та postgresql 9.1.
Як це зробити? Я помітив порт 5432 закритий, як це відкрити?
Відповіді:
Щоб відкрити порт 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
Мені не потрібно згадувати, що це основна конфігурація, тепер слід подумати про зміну брандмауера та покращення безпеки вашої СУБД.
host <database> <user> <remote_client_IPaddress>/24 md5
Це більше не працює, якщо він коли-небудь робив:
розмістити всі всі * md5
Правильні можливі рядки для цього:
розмістити весь весь діапазон 0.0.0.0/0 md5 # ipv4
розмістити всі всі :: 0/0 md5 # ipv6 діапазон
розмістити всі всі md5 #all ip
host all all all md5
буде добре? Це правильно? якась проблема безпеки?
Відповідь з найвищою оцінкою та прийнята відповідь серйозно впливає на безпеку. Цей метод вимкнено за замовчуванням з поважних причин.
Краще використовувати переадресацію локального порту за допомогою 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