Tôi cần truy cập cơ sở dữ liệu postgresql từ một máy từ xa trên VPS tại DigitalOcean chạy 12.10 và postgresql 9.1.
Làm thế nào để tôi làm điều này? Tôi nhận thấy cổng 5432 đã bị đóng, làm cách nào để mở cổng này?
Tôi cần truy cập cơ sở dữ liệu postgresql từ một máy từ xa trên VPS tại DigitalOcean chạy 12.10 và postgresql 9.1.
Làm thế nào để tôi làm điều này? Tôi nhận thấy cổng 5432 đã bị đóng, làm cách nào để mở cổng này?
Câu trả lời:
Để mở cổng 5432, hãy chỉnh sửa /etc/postgresql/9.1/main/postgresql.conf
và thay đổi
listen_addresses='localhost'
đến
listen_addresses='*'
và khởi động lại DBMS của bạn
invoke-rc.d postgresql restart
bây giờ bạn có thể kết nối với
$ psql -h hostname -U username -d database
nếu bạn không thể tự xác thực, thì bạn cần cấp cho người dùng quyền truy cập vào cơ sở dữ liệu của bạn
Chỉnh sửa của bạn
/etc/postgresql/9.1/main/pg_hba.conf
và thêm
host all all all md5
(Điều này là để truy cập mở rộng. Để kiểm soát chặt chẽ hơn, hãy tham khảo tài liệu pg_hba.conf và điều chỉnh theo nhu cầu của bạn).
Sau đây bạn cũng cần tải lại
invoke-rc.d postgresql reload
Tôi không cần đề cập rằng đây là cấu hình cơ bản, bây giờ bạn nên suy nghĩ về việc sửa đổi tường lửa của mình và cải thiện tính bảo mật của DBMS.
host <database> <user> <remote_client_IPaddress>/24 md5
Điều này không còn hoạt động nữa, nếu nó đã từng:
lưu trữ tất cả * md5
Các dòng chính xác có thể cho điều này là:
lưu trữ tất cả phạm vi 0.0.0.0/0 md5 # ipv4
lưu trữ tất cả :: 0/0 md5 # ipv6 phạm vi
lưu trữ tất cả tất cả md5 #all ip
host all all all md5
sẽ hoạt động tốt? Đúng Vậy? có vấn đề gì về bảo mật không?
Câu trả lời được bình chọn và chấp nhận cao nhất có những sai sót nghiêm trọng về an ninh. Phương pháp này bị tắt theo mặc định vì lý do tốt.
Sử dụng tốt hơn chuyển tiếp cổng cục bộ với ssh
:
ssh -L local_port:localhost:foreign_port user@server
Bắt đầu chuyển tiếp cổng:
ssh -L 5432:localhost:5432 user@your-server.com
#or
ssh -L 5432:127.0.0.1:5432 user@your-server.com
(Thay đổi cổng địa phương và nước ngoài để phù hợp với cấu hình của bạn).
Sau đó, bạn có thể kết nối trực tiếp với cơ sở dữ liệu từ máy tính cục bộ của mình:
psql -U db_user -p local_port -l