温馨提示×

Debian下PostgreSQL配置指南

小樊
33
2025-10-14 22:30:55
栏目: 云计算

Debian下PostgreSQL配置指南

1. 安装PostgreSQL

首先更新系统包列表并安装PostgreSQL及其附加组件(postgresql-contrib包含额外工具和模块):

sudo apt update sudo apt install postgresql postgresql-contrib 

安装完成后,PostgreSQL服务会自动启动,可通过sudo systemctl status postgresql验证状态(显示“active (running)”即为正常)。

2. 初始配置:切换用户与修改默认密码

PostgreSQL默认以postgres系统用户运行,需切换至该用户执行初始配置:

sudo -i -u postgres 

进入PostgreSQL交互终端(psql),修改postgres用户的默认密码(增强安全性):

ALTER USER postgres WITH PASSWORD 'your_secure_password'; 

输入\q退出psql终端。

3. 创建数据库与用户

3.1 创建数据库

psql中执行以下命令创建数据库(如mydb):

CREATE DATABASE mydb; 

3.2 创建用户并授予权限

创建专用用户(如myuser)并设置密码,随后将数据库所有权授予该用户:

CREATE USER myuser WITH ENCRYPTED PASSWORD 'user_secure_password'; GRANT ALL PRIVILEGES ON DATABASE mydb TO myuser; 

输入\q退出psql

4. 配置连接与认证

4.1 修改postgresql.conf(主配置文件)

postgresql.conf位于/etc/postgresql/<version>/main/目录(<version>为PostgreSQL版本号,如14),需调整以下关键参数:

  • 允许远程连接:将listen_addresseslocalhost改为*(允许所有IP)或指定服务器IP(如192.168.1.100);
  • 设置端口:默认port = 5432(可根据需求修改,需确保防火墙开放该端口);
  • 调整最大连接数max_connections(默认100,根据服务器内存调整,如max_connections = 200)。

修改后需重启服务使更改生效:

sudo systemctl restart postgresql ```。 ### 4.2 修改`pg_hba.conf`(客户端认证配置) `pg_hba.conf`位于同一目录,用于控制客户端访问权限。需添加或修改规则以允许特定IP或网段连接: - **允许本地连接**(默认已存在,可保留): `host all all 127.0.0.1/32 scram-sha-256` - **允许远程IP段连接**(如`192.168.1.0/24`): `host all all 192.168.1.0/24 scram-sha-256` > 注:`scram-sha-256`为更安全的密码认证方式,推荐替代旧的`md5`。修改后需重新加载配置: ```bash sudo systemctl reload postgresql ```。 ## 5. 防火墙配置 若系统启用`ufw`防火墙,需允许PostgreSQL端口(默认5432)的流量: ```bash sudo ufw allow 5432/tcp 

验证防火墙规则:

sudo ufw status 

应显示“5432/tcp ALLOW”。

6. 测试连接

6.1 本地连接

使用psql命令行工具测试本地连接:

psql -U myuser -d mydb -h localhost 

输入密码后,若出现mydb=>提示符则表示连接成功。

6.2 远程连接

从远程机器使用相同命令测试(替换localhost为服务器IP):

psql -U myuser -d mydb -h 192.168.1.100 

输入密码后成功连接则说明远程配置生效。

7. 可选:配置SSL加密(增强安全性)

若需加密客户端与服务器之间的通信,可按以下步骤配置SSL:

7.1 生成SSL证书与私钥

sudo mkdir -p /etc/postgresql/<version>/main/ssl sudo openssl req -new -x509 -days 365 -nodes -text -subj "/CN=postgres" -out /etc/postgresql/<version>/main/ssl/server.crt -keyout /etc/postgresql/<version>/main/ssl/server.key sudo chmod 600 /etc/postgresql/<version>/main/ssl/server.key 

7.2 修改postgresql.conf启用SSL

ssl = on ssl_cert_file = '/etc/postgresql/<version>/main/ssl/server.crt' ssl_key_file = '/etc/postgresql/<version>/main/ssl/server.key' 

7.3 重启服务

sudo systemctl restart postgresql 

此时,客户端连接时需添加sslmode=require参数(如psql "sslmode=require host=192.168.1.100 dbname=mydb user=myuser password=user_secure_password")。

0