Ubuntu 24.04 PostgreSQL 安装与配置完整指南

83 阅读3分钟

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. 安全建议

  1. 使用强密码:包含大小写字母、数字和特殊字符
  2. 定期更新:保持 PostgreSQL 版本最新
  3. 限制访问:只允许必要的 IP 地址访问
  4. 启用 SSL:在生产环境中启用 SSL 加密
  5. 定期备份:设置自动化备份策略
  6. 监控日志:定期检查数据库日志

10. 故障排除

连接被拒绝:

  • 检查防火墙设置
  • 验证 pg_hba.conf 配置
  • 确认服务正在运行

认证失败:

  • 检查用户名和密码
  • 确认 pg_hba.conf 中的认证方法

权限问题:

  • 确保用户有数据库访问权限
  • 检查数据库所有者和权限设置