PostgreSQL在Linux上的配置指南
PostgreSQL是开源关系型数据库,Linux是其主流部署环境。以下从基础配置、安全配置、性能优化三方面展开,覆盖从安装后到上线的全流程。
安装完成后,首先启动PostgreSQL服务并设置为开机自动启动,确保服务长期稳定运行:
# 启动服务
sudo systemctl start postgresql # Ubuntu/Debian通用
sudo systemctl start postgresql-15 # CentOS/RHEL(版本号替换为实际安装版本)
# 设置开机自启
sudo systemctl enable postgresql
sudo systemctl enable postgresql-15
PostgreSQL安装后会创建系统用户postgres,用于管理数据库。通过以下命令切换至该用户:
sudo -i -u postgres # 切换至postgres用户(无需密码)
切换至postgres用户后,使用psql命令进入交互式控制台:
psql
控制台提示符为postgres=#,表示已成功登录。输入\q可退出控制台。
默认情况下,PostgreSQL会创建名为postgres的数据库和同名用户。若需创建自定义数据库和用户,可通过以下命令实现:
# 创建数据库(例如名为"mydb")
CREATE DATABASE mydb;
# 创建用户并设置密码(例如用户名"myuser",密码"mypassword")
CREATE USER myuser WITH ENCRYPTED PASSWORD 'mypassword';
# 授予用户对数据库的所有权限
GRANT ALL PRIVILEGES ON DATABASE mydb TO myuser;
输入\q退出控制台。
默认情况下,PostgreSQL仅允许本地连接(localhost)。需修改postgresql.conf文件,开启远程访问:
# 找到配置文件路径(不同发行版路径可能不同)
# Ubuntu/Debian: /etc/postgresql/<version>/main/postgresql.conf
# CentOS/RHEL: /var/lib/pgsql/<version>/data/postgresql.conf
sudo nano /etc/postgresql/15/main/postgresql.conf # 示例路径
找到listen_addresses参数,将其修改为:
listen_addresses = '*' # 允许所有IP连接(生产环境建议限制为特定IP段)
保存并退出(Ctrl+O→Enter→Ctrl+X)。
pg_hba.conf文件用于定义客户端认证规则。需添加允许远程连接的规则:
sudo nano /etc/postgresql/15/main/pg_hba.conf # 示例路径
在文件末尾添加以下内容(允许所有IP通过密码认证连接):
# TYPE DATABASE USER ADDRESS METHOD
host all all 0.0.0.0/0 md5 # MD5加密密码认证
# 若需更安全的方式,可将md5替换为scram-sha-256(PostgreSQL 10+支持)
保存并退出。
修改配置文件后,需重启PostgreSQL服务:
sudo systemctl restart postgresql # Ubuntu/Debian
sudo systemctl restart postgresql-15 # CentOS/RHEL
PostgreSQL默认使用5432端口。需确保防火墙开放该端口,允许外部连接:
# Ubuntu/Debian(ufw防火墙)
sudo ufw allow 5432/tcp
# CentOS/RHEL(firewalld防火墙)
sudo firewall-cmd --permanent --add-port=5432/tcp
sudo firewall-cmd --reload
shared_buffers参数决定了PostgreSQL用于缓存数据的内存大小。默认值较小(通常为128MB),可根据服务器内存调整:
sudo nano /etc/postgresql/15/main/postgresql.conf
找到shared_buffers参数,修改为服务器内存的25%-40%(例如16GB内存可设置为4GB):
shared_buffers = 4GB
保存并重启服务。
work_mem参数用于排序、哈希表等操作的临时内存。默认值较小(通常为4MB),可根据并发查询量调整:
work_mem = 16MB # 建议设置为16MB-64MB(根据实际情况调整)
保存并重启服务。
max_connections参数决定了PostgreSQL允许的最大并发连接数。默认值为100,可根据应用需求调整:
max_connections = 200 # 建议设置为100-500(需结合服务器资源)
注意:增加max_connections会消耗更多内存,需配合shared_buffers和work_mem的调整。
使用远程客户端(如另一台Linux机器)连接PostgreSQL,验证远程访问是否成功:
psql -h <服务器IP> -U myuser -d mydb
输入密码后,若成功进入psql控制台,则表示远程访问配置成功。
确保PostgreSQL服务运行正常:
sudo systemctl status postgresql # Ubuntu/Debian
sudo systemctl status postgresql-15 # CentOS/RHEL
若状态显示为active (running),则表示服务正常。
通过以上步骤,即可完成PostgreSQL在Linux上的基础配置、安全设置及性能优化。根据实际业务需求,可进一步调整其他参数(如maintenance_work_mem、effective_cache_size等)。