Cách cấu hình PostgreSQL để chấp nhận tất cả các kết nối đến


106

Tôi có một cơ sở dữ liệu PostgreSQL mà tôi muốn định cấu hình để chấp nhận tất cả các kết nối đến bất kể địa chỉ IP nguồn là gì. Làm cách nào để cấu hình điều này trong tệp pg_hba.conf? Tôi đang sử dụng postgreSQL phiên bản 8.4.

Câu trả lời:


215

Chỉ cần sử dụng 0.0.0.0/0.

host    all             all             0.0.0.0/0            md5

Đảm bảo listen_addressesin postgresql.conf(hoặc ALTER SYSTEM SET) cho phép các kết nối đến trên tất cả các giao diện IP khả dụng.

listen_addresses = '*'

Sau khi thay đổi, bạn phải tải lại cấu hình. Một cách để làm điều này là thực thi điều này SELECTvới tư cách là một siêu người dùng.

SELECT pg_reload_conf();

điều này có thực sự hoạt động với loại md5không? Tôi nghĩ rằng nó sẽ là cần thiết để sử dụng loại trust...
Dan LaRocque

5
"trust" cho phép tất cả người dùng kết nối mà không cần mật khẩu. Đó là thứ mà tôi sẽ không sử dụng, mật khẩu là điều tối thiểu mà bạn luôn nên sử dụng. Ngay cả trên máy tính của riêng bạn.
Frank Heikens,

1
à, tôi đọc câu hỏi theo cách khác - tôi nghĩ ý của anh ấy là chấp nhận kết nối từ tất cả các khách hàng một cách vô điều kiện (có thể đối với một số testbed không quan trọng). tôi thấy những gì bạn đang nhận được bây giờ.
Dan LaRocque

6
LƯU Ý : Nếu mạng của bạn là IPv6, bạn cần sử dụng ::/0trái ngược với 0.0.0.0/0khi sửa đổi tệp pg_hba.conf.
Aron Boyette

2
Đảm bảo postgrescó mật khẩu mạnh: sudo -u postgres psql, \password.
Adobe

47

0.0.0.0/0 cho tất cả các địa chỉ IPv4

::0/0 cho tất cả các địa chỉ IPv6

all để khớp với bất kỳ địa chỉ IP nào

samehost để khớp với bất kỳ địa chỉ IP nào của máy chủ

samenet để khớp với bất kỳ địa chỉ nào trong bất kỳ mạng con nào mà máy chủ được kết nối trực tiếp.

ví dụ

host    all             all             0.0.0.0/0            md5

6

Ngoài các câu trả lời tuyệt vời ở trên, nếu bạn muốn một số phạm vi IP được cấp phép, bạn có thể chỉnh sửa /var/lib/pgsql/{VERSION}/datatệp và đặt một cái gì đó như

host all all 172.0.0.0/8 trust

Nó sẽ chấp nhận các kết nối đến từ bất kỳ máy chủ nào trong phạm vi trên. Nguồn: http://www.linuxtopia.org/online_books/database_guides/Practical_PostgreSQL_database/c15679_002.htm


Cảm ơn vì gợi ý phạm vi!
leole

0

Định cấu hình tất cả các tệp với postgres 12 trên centos:

bước 1: tìm kiếm và chỉnh sửa tệp

sudo vi /var/lib/pgsql/12/data/pg_hba.conf

nhấn "i" và thay đổi IPv4 tại dòng

host    all             all             0.0.0.0/0            md5

bước 2: tìm kiếm và chỉnh sửa tệp postgresql.conf

sudo vi /var/lib/pgsql/12/data/postgresql.conf

thêm dòng cuối cùng: nghe_addresses = '*': wq! (lưu tệp) - bước 3: khởi động lại

systemctl restart postgresql-12.service

-6

Thêm dòng này vào pg_hba.conf của thư mục postgres

host    all    all    all    trust

"trust" cho phép tất cả người dùng kết nối mà không cần mật khẩu.


Bạn có thể thêm một số bình luận vào mã? Đặt nó ở đâu và nó hoạt động như thế nào?
Alistra

4
Mặc dù đoạn mã này được hoan nghênh và có thể cung cấp một số trợ giúp, nó sẽ được cải thiện đáng kể nếu nó bao gồm giải thích về cách thứclý do tại sao đoạn mã này giải quyết được vấn đề. Hãy nhớ rằng bạn đang trả lời câu hỏi cho độc giả trong tương lai, không chỉ người hỏi bây giờ! Vui lòng chỉnh sửa câu trả lời của bạn để thêm giải thích và đưa ra dấu hiệu về những hạn chế và giả định nào được áp dụng.
Toby Speight

cho phép kết nối từ tất cả các ip thực sự là không an toàn
sandes
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.