Định cấu hình tệp pg_hba.conf để cho phép truy cập từ các máy chủ khác vào cơ sở dữ liệu


15

Tôi có một cơ sở dữ liệu postgres trên một máy chủ và tôi cần truy cập nó từ một máy chủ khác.

Tôi cần chỉnh sửa tệp pg_hba.conf, nhưng giờ đã biết các bước để chỉnh sửa tệp này là gì. Máy chủ Centos

Tôi cần thêm dòng sau vào tập tin

host    all         all         10.0.2.12         255.255.255.255   trust

Tôi đặt nó ở var/lib/pgsql/data/

Bây giờ về cơ bản tôi không chắc chắn các bước chính xác để làm điều này là gì

Câu trả lời:


14

Trước tiên, hãy lấy một bản sao lưu của pg_hba.conf đã cho

sudo tar cvf /var/tmp/mybackup_pg_hba_conf.tar /var/lib/pgsql/data/pg_hba.conf

Bằng cách đó, bạn đã có phiên bản cũ hơn nếu bạn bắt vít. Một tính năng hay của lưu trữ tar là bảo tồn các quyền và thư mục. Vì vậy, khi pg_hba.conf bị phá vỡ ngoài sự công nhận. Bạn có thể:

cd /
sudo tar xvf /var/tmp/mybackup_pg_hba_conf.tar

Điều này sẽ khôi phục pg_hba.conf sao lưu từ kho lưu trữ bạn đã tạo trước đó.

Đối với việc chèn dòng thực tế:

sudo su -c 'echo "host    all         all         10.0.2.12         255.255.255.255   trust" >> /var/lib/pgsql/data/pg_hba.conf'

(LƯU Ý: Lệnh được chỉnh sửa. Cảm ơn bortzmeyer!)

Hãy làm nó. Lưu ý rằng điều này chỉ nối thêm dòng vào pg_hba.conf. Nếu bạn cần thay đổi nó, bạn phải sử dụng một trình soạn thảo thực tế. Thích vi. Đường cong học tập có thể hơi dốc, nhưng sau khi bạn đã học được ít nhất những điều cơ bản, bạn sẽ khá an toàn trong hầu hết mọi môi trường không trộn lẫn mà bạn gặp phải.

Bây giờ tôi quay lại đường đua, lần tới bạn nên thử khởi động lại cơ sở dữ liệu postgresql của bạn. Trên máy Centos, điều này tôi tin là được thực hiện bởi:

sudo service postgresql restart

hoặc bạn chỉ có thể tải lại cấu hình mà không cần khởi động lại:

su - postgres
pg_ctl reload

Bây giờ bạn sẽ có thể truy cập cơ sở dữ liệu postrgresql của Centos-máy từ 10.0.2.12


1
Sudo trong lệnh cuối cùng sẽ không hoạt động do thao tác được mã hóa được thực hiện bằng chuyển hướng, được xử lý bởi shell chứ không phải bởi chương trình bạn chạy với sudo (echo, trong trường hợp này).
bortzmeyer

Điểm tốt! Nó nên được viết dưới dạng sudo "echo 'lưu trữ tất cả 10.0.2.12 255.255.255.255 tin tưởng' >> /var/lib/pgsql/data/pg_hba.conf"
pyhimys

Cách lý tưởng nhất là đặt nó dưới sự kiểm soát phiên bản trong một vị trí quản trị viên và triển khai nó sau khi thay đổi nó thông qua SSH, v.v.
vfclists

1
Vị trí mặc định của tệp pg_hba.conf có một chút khác biệt trong 9,4: /var/lib/pgsql/9.4/data/pg_hba.conf.
Serge Vlasov

13

Đừng quên chỉnh sửa postgresql.conf và thay đổi / thêm dòng

listen_addresses = '*'

Postgresql theo mặc định lắng nghe trên localhost


Chẳng phải ví dụ list_addresses của bạn quá dễ dãi sao? Đó là một lỗ hổng bảo mật nếu máy chủ chạy trên nhiều IP, tức là công khai, nội bộ, VPN, v.v.
vfclists
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.