Đang tải lại PostgreSQL sau khi thay đổi cấu hình


16

Tôi đã thực hiện một số thay đổi đối với pg_hba.conf và tôi muốn chúng ảnh hưởng. Tôi đã tìm thấy một số nơi mà mọi người nói rằng tôi có thể yêu cầu PostgreSQL tải lại, nhưng có một số kỹ thuật khác nhau được liệt kê và chưa có kỹ thuật nào trong số đó hoạt động với tôi.

Tài liệu tham khảo có thẩm quyền nhất mà tôi tìm thấy là cho lệnh pg_ctl, nhưng tôi không chắc thư mục PGDATA của mình ở đâu. Tôi sẽ tiếp tục tìm kiếm.

Tôi đang chạy PostgreSQL 8.3 trên Ubuntu 8.10.

Câu trả lời:


15

Bạn có thể kiểm tra PGDATA của bạn ở đâu bằng cách kết nối với pg và ban hành lệnh:

show data_directory;

Trên Ubuntu, nó thường /var/lib/postgresql/8.3/main/.

Bạn cũng có thể: /etc/init.d/postgresql-8.3 reload


17

Mặc dù người ban đầu đặt câu hỏi ngụ ý rằng anh ta đang chạy Ubuntu 8.10, nhưng việc sử dụng các phiên bản Ubuntu sau này cũng có thể vấp ngã ở đây. Và điều này thực tế cũng có thể hoạt động với 8.10. Tôi không biết, tôi không có bản cài đặt 8.10 nào để dùng thử ..

Ok, chúng ta hãy cắt đến điểm. Vì vậy, cách "kiểm soát" dịch vụ mới là sử dụng servicelệnh. Vì vậy, bạn có thể tải lại cấu hình bằng lệnh sau:

service postgresql-8.3 reload

một cách tự nhiên, bạn cần phải có các quyền thích hợp, do đó rất có thể cần phải trả trước lệnh bằng một cái gì đó như sudohoặc su -c rootnhư thế này:

sudo service postgresql-8.3 reload
hoặc là
su -c root 'service postgresql-8.3 reload'

PS Trong tài liệu Ubuntu được đề xuất rằng một cái gì đó liên quan đến phương pháp mới này đã được thực hiện từ đó với bản phát hành 6.10, tuy nhiên nếu tôi hiểu chính xác thì nó đã không được sử dụng chung cho đến ngày 9.10.


Tôi đã nâng cấp trong hai năm qua, vì vậy tôi sẽ thử. Cảm ơn đã giữ cho tôi mát mẻ.
Don Kirkby

Nói chung là tốt hơn để sử dụng su -thay chosu
x-yuri

5

Tùy chọn 1: Từ trình vỏ dòng lệnh

su - postgres
/usr/bin/pg_ctl reload

Tùy chọn 2: Sử dụng SQL

SELECT pg_reload_conf();

Sử dụng một trong hai tùy chọn sẽ không làm gián đoạn bất kỳ truy vấn hoặc kết nối hoạt động nào đến cơ sở dữ liệu, do đó áp dụng những thay đổi này dường như.


3

Điều này sẽ thực hiện các mẹo:

kill -HUP $(head -1 $PGDATA/postmaster.pid)

2

Nếu bạn không muốn khởi động lại máy chủ và chỉ cần gửi tín hiệu đến postgreSQL, chỉ cần gõ lệnh:
pg_ctl reload


1

Cuối cùng tôi đã tìm thấy một kỹ thuật làm việc cho tôi từ bài viết này . Lệnh là:

sudo invoke-rc.d postgresql-8.3 reload

Tôi vẫn đánh giá cao phản hồi về kỹ thuật được đề xuất là gì.


1
Nếu bạn đang sử dụng PostgreSQL đóng gói, sử dụng tập lệnh gói - như ví dụ này có cho Ubuntu - sẽ là kỹ thuật được đề xuất. Nếu bạn đã xây dựng từ nguồn, hãy sử dụng pg_ctl.
Magnus Hagander

1

Sau đây nên làm điều đó cho bạn:

sudo /etc/init.d/postgresql-8.3 reload

0

Trong một dòng:

su -c "pg_ctl reload" - postgres

-1

ls /etc/init.d/ Hãy xem những gì ở đó thấy postgresql?

sudo /etc/init.d/postgresql tải lại

/etc/init.d/

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.