第二章:安装与配置¶
安装 PostgreSQL¶
Ubuntu/Debian 系统¶
# 更新包列表
sudo apt update
# 安装 PostgreSQL
sudo apt install postgresql postgresql-contrib
# 查看安装版本
psql --version
CentOS/RHEL 系统¶
# 安装 PostgreSQL 仓库
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
# 安装 PostgreSQL
sudo yum install -y postgresql16-server postgresql16-contrib
# 初始化数据库
sudo /usr/pgsql-16/bin/postgresql-16-setup initdb
# 启动服务
sudo systemctl start postgresql-16
sudo systemctl enable postgresql-16
macOS 系统¶
Windows 系统¶
- 访问 PostgreSQL 官网
- 下载安装程序
- 运行安装向导
- 设置管理员密码
- 选择安装组件
初始配置¶
1. 连接到 PostgreSQL¶
2. 修改管理员密码¶
3. 创建新数据库用户¶
4. 创建新数据库¶
配置文件详解¶
主要配置文件位置¶
# Ubuntu/Debian
/etc/postgresql/16/main/
# CentOS/RHEL
/var/lib/pgsql/16/data/
# 主要配置文件
postgresql.conf # 主配置文件
pg_hba.conf # 客户端认证配置
pg_ident.conf # 用户映射配置
postgresql.conf 重要参数¶
# 连接设置
listen_addresses = 'localhost' # 监听地址,'*' 表示所有地址
port = 5432 # 监听端口
# 内存设置
shared_buffers = 128MB # 共享缓冲区大小
work_mem = 4MB # 每个查询的工作内存
maintenance_work_mem = 64MB # 维护操作的工作内存
# 日志设置
logging_collector = on # 启用日志收集
log_directory = 'pg_log' # 日志目录
log_filename = 'postgresql-%Y-%m-%d.log' # 日志文件名格式
log_statement = 'none' # 日志记录级别:none, ddl, mod, all
# 性能设置
max_connections = 100 # 最大连接数
effective_cache_size = 4GB # 有效缓存大小
random_page_cost = 4.0 # 随机页面访问成本
pg_hba.conf 认证配置¶
# TYPE DATABASE USER ADDRESS METHOD
# 本地连接使用 peer 认证
local all all peer
# IPv4 本地连接使用 md5 认证
host all all 127.0.0.1/32 md5
# IPv6 本地连接使用 md5 认证
host all all ::1/128 md5
# 允许特定 IP 连接
host all all 192.168.1.0/24 md5
# 允许所有 IP 连接(生产环境慎用)
host all all 0.0.0.0/0 md5
常用管理命令¶
服务管理¶
# Ubuntu/Debian
sudo systemctl status postgresql
sudo systemctl start postgresql
sudo systemctl stop postgresql
sudo systemctl restart postgresql
sudo systemctl reload postgresql
# 查看日志
sudo tail -f /var/log/postgresql/postgresql-16-main.log
数据库管理¶
-- 列出所有数据库
\l
-- 连接到数据库
\c database_name
-- 列出所有表
\dt
-- 列出所有用户
\du
-- 查看表结构
\d table_name
-- 查看索引
\di
-- 退出 psql
\q
远程访问配置¶
1. 修改监听地址¶
# 编辑 postgresql.conf
sudo nano /etc/postgresql/16/main/postgresql.conf
# 修改 listen_addresses
listen_addresses = '*'
2. 配置认证方式¶
# 编辑 pg_hba.conf
sudo nano /etc/postgresql/16/main/pg_hba.conf
# 添加远程访问规则
host all all 0.0.0.0/0 md5
3. 开放防火墙端口¶
# Ubuntu/Debian
sudo ufw allow 5432/tcp
sudo ufw reload
# CentOS/RHEL
sudo firewall-cmd --permanent --add-port=5432/tcp
sudo firewall-cmd --reload
4. 重启服务¶
性能优化配置¶
内存优化¶
# 根据系统内存调整
shared_buffers = 25% of RAM # 建议系统内存的 25%
work_mem = (RAM - shared_buffers) / max_connections
maintenance_work_mem = 10% of RAM # 维护操作内存
磁盘优化¶
# 调整检查点
checkpoint_timeout = 15min # 检查点超时时间
max_wal_size = 1GB # 最大 WAL 大小
min_wal_size = 80MB # 最小 WAL 大小
# I/O 设置
effective_io_concurrency = 200 # 并发 I/O 数
random_page_cost = 1.1 # SSD 设置为 1.1-1.3
连接优化¶
# 连接池设置
max_connections = 100 # 根据实际需求调整
superuser_reserved_connections = 3 # 保留给超级用户的连接
# 空闲连接超时
idle_in_transaction_session_timeout = 10min
安全配置¶
1. 修改默认端口¶
2. 限制访问权限¶
3. SSL 加密¶
4. 定期备份¶
# 使用 pg_dump 备份
pg_dump -U postgres -h localhost mydb > backup.sql
# 使用 pg_dumpall 备份所有数据库
pg_dumpall -U postgres -h localhost > alldb_backup.sql
常见问题解决¶
1. 连接被拒绝¶
# 检查服务状态
sudo systemctl status postgresql
# 检查监听地址
sudo netstat -tlnp | grep 5432
# 检查 pg_hba.conf 配置
2. 内存不足¶
3. 磁盘空间不足¶
总结¶
本章介绍了 PostgreSQL 的安装和配置方法,包括: - 不同操作系统的安装步骤 - 初始配置和用户管理 - 配置文件详解 - 远程访问配置 - 性能优化建议 - 安全配置要点
正确的安装和配置是 PostgreSQL 稳定运行的基础。下一章我们将学习 SQL 基础语法。