Ubuntu 24.04 PostgreSQL 安装与配置完整指南
PostgreSQL 是一款功能强大的开源关系型数据库系统,在 Ubuntu 24.04 上安装和配置它是许多开发者的必备技能。本文将详细介绍从安装到配置的完整流程。
1. 系统更新与准备
首先,确保系统是最新的:
sudo apt update
sudo apt upgrade -y
2. 安装 PostgreSQL
Ubuntu 24.04 仓库中已经包含了 PostgreSQL 的最新版本:
# 安装 PostgreSQL
sudo apt install postgresql postgresql-contrib -y
# 检查 PostgreSQL 服务状态
sudo systemctl status postgresql
# 设置开机自启
sudo systemctl enable postgresql
3. 修改 PostgreSQL 密码
3.1 切换到 postgres 用户
sudo -i -u postgres
3.2 进入 PostgreSQL 控制台
psql
3.3 修改默认密码
在 psql 提示符下执行:
-- 修改 postgres 用户密码
ALTER USER postgres PASSWORD '你的强密码';
-- 或者创建新用户并设置密码
CREATE USER 你的用户名 WITH PASSWORD '你的密码';
-- 授予权限
ALTER USER 你的用户名 WITH SUPERUSER;
-- 退出 psql
\q
4. 允许远程访问配置
4.1 修改 postgresql.conf
# 退出 postgres 用户
exit
# 编辑 PostgreSQL 配置文件
sudo nano /etc/postgresql/16/main/postgresql.conf
找到并修改以下行:
# 监听所有地址
listen_addresses = '*'
# 设置端口(默认 5432,可根据需要修改)
port = 5432
4.2 配置客户端认证
编辑 pg_hba.conf 文件:
sudo nano /etc/postgresql/16/main/pg_hba.conf
在文件末尾添加以下配置:
# 允许所有 IP 使用密码连接
host all all 0.0.0.0/0 scram-sha-256
# 或者限制特定网段
host all all 192.168.1.0/24 scram-sha-256
4.3 重启 PostgreSQL 服务
sudo systemctl restart postgresql
5. 配置防火墙(如果启用)
# 如果使用 UFW
sudo ufw allow 5432/tcp
sudo ufw reload
# 如果使用 iptables
sudo iptables -A INPUT -p tcp --dport 5432 -j ACCEPT
6. 基本操作与测试
6.1 本地连接测试
# 使用 psql 连接
sudo -u postgres psql
# 或者使用密码连接
psql -h localhost -U postgres -d postgres
6.2 创建数据库和用户
-- 创建新数据库
CREATE DATABASE mydatabase;
-- 创建新用户
CREATE USER myuser WITH ENCRYPTED PASSWORD 'mypassword';
-- 授予权限
GRANT ALL PRIVILEGES ON DATABASE mydatabase TO myuser;
-- 查看所有数据库
\l
-- 查看所有用户
\du
6.3 远程连接测试
从另一台机器测试连接:
# 使用 psql 客户端连接
psql -h <服务器IP> -p 5432 -U postgres -d postgres
# 使用 telnet 测试端口
telnet <服务器IP> 5432
7. 高级配置建议
7.1 性能调优
编辑 /etc/postgresql/16/main/postgresql.conf:
# 内存配置(根据实际内存调整)
shared_buffers = 256MB # 建议为系统内存的 25%
work_mem = 16MB # 每个查询操作的内存
maintenance_work_mem = 64MB # 维护操作的内存
# 日志配置
logging_collector = on
log_directory = 'pg_log'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_rotation_age = 1d
log_rotation_size = 100MB
# 自动清理
autovacuum = on
7.2 启用扩展
-- 查看可用扩展
SELECT * FROM pg_available_extensions;
-- 安装常用扩展
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
CREATE EXTENSION IF NOT EXISTS "pgcrypto";
CREATE EXTENSION IF NOT EXISTS "hstore";
8. 常用管理命令
# 启动服务
sudo systemctl start postgresql
# 停止服务
sudo systemctl stop postgresql
# 重启服务
sudo systemctl restart postgresql
# 查看日志
sudo journalctl -u postgresql -f
# 备份数据库
sudo -u postgres pg_dump mydatabase > backup.sql
# 恢复数据库
sudo -u postgres psql mydatabase < backup.sql
9. 安全建议
- 使用强密码:包含大小写字母、数字和特殊字符
- 定期更新:保持 PostgreSQL 版本最新
- 限制访问:只允许必要的 IP 地址访问
- 启用 SSL:在生产环境中启用 SSL 加密
- 定期备份:设置自动化备份策略
- 监控日志:定期检查数据库日志
10. 故障排除
连接被拒绝:
- 检查防火墙设置
- 验证 pg_hba.conf 配置
- 确认服务正在运行
认证失败:
- 检查用户名和密码
- 确认 pg_hba.conf 中的认证方法
权限问题:
- 确保用户有数据库访问权限
- 检查数据库所有者和权限设置