postgresql.conf
核心網絡參數listen_addresses
:將參數值從默認的localhost
改為'*'
,允許PostgreSQL監聽所有網絡接口的連接請求,支持遠程客戶端訪問;若僅需限制特定IP段,可設置為具體IP列表(如'192.168.1.0/24'
)。port
:保持默認5432
即可,如需更改需同步更新防火墻規則,避免端口沖突。ssl
相關參數:若需加密傳輸,將ssl
設為on
,并指定證書與密鑰文件路徑(ssl_cert_file = '/etc/ssl/certs/postgresql.crt'
、ssl_key_file = '/etc/ssl/private/postgresql.key'
),提升數據傳輸安全性。pg_hba.conf
認證規則scram-sha-256
(更安全)替代md5
。例如,允許192.168.1.0/24
網段通過密碼認證連接所有數據庫:host all all 192.168.1.0/24 scram-sha-256
;若需允許所有IP(生產環境不推薦),可使用host all all 0.0.0.0/0 scram-sha-256
。local all all peer
(Unix域套接字)或local all all trust
(僅測試環境使用),確保本地進程高效連接。sudo ufw allow 5432/tcp
命令開放PostgreSQL默認端口,若更改了port
參數,需同步替換為實際端口;執行sudo ufw enable
啟用防火墻并驗證規則:sudo ufw status
。ping <服務器IP>
測試客戶端與服務器的網絡連通性;使用telnet <服務器IP> 5432
或nc -vz <服務器IP> 5432
驗證端口是否可達,確保無網絡阻斷。max_connections
參數:根據服務器內存大小調整(如8GB內存可設置為100-200
),避免過多連接導致內存耗盡。修改后需重啟PostgreSQL服務生效:sudo systemctl restart postgresql
。sudo apt update && sudo apt install pgbouncer
。/etc/pgbouncer/pgbouncer.ini
:
[databases]
:指定要池化的數據庫(如mydb = host=localhost port=5432 dbname=mydb
);[pgbouncer]
:設置listen_port = 6432
(連接池端口)、auth_type = md5
(認證方式)、pool_mode = transaction
(事務池模式,適合大多數場景)、max_client_conn = 1000
(最大客戶端連接數)、default_pool_size = 20
(每個客戶端的默認池大?。?、server_idle_timeout = 300
(服務器空閑連接超時,回收資源)。sudo systemctl restart pgbouncer
,并通過sudo systemctl status pgbouncer
驗證狀態。psycopg2.pool.SimpleConnectionPool
)管理連接,設置合理的minconn
(最小連接數)和maxconn
(最大連接數),避免頻繁創建/銷毀連接。postgresql.conf
,調整以下參數提升TCP性能:
tcp_keepalives_idle = 60
:空閑連接60秒后發送?;钐綔y;tcp_keepalives_interval = 10
:?;钐綔y間隔10秒;tcp_keepalives_count = 5
:連續5次探測失敗后關閉連接,防止僵尸連接占用資源。/etc/hosts
文件中(如192.168.1.100 postgres-server
),確??焖俳馕?。md5
加密(易破解),優先使用scram-sha-256
(PostgreSQL 10+原生支持),在pg_hba.conf
中修改認證方式為scram-sha-256
,并重新設置用戶密碼:ALTER USER username WITH PASSWORD 'new_password';
。pg_hba.conf
中,將host
規則的IP段縮小至實際需要的網段(如公司內網10.0.0.0/8
),而非開放0.0.0.0/0
;結合防火墻規則,進一步過濾非法IP訪問。