Postgresql安装配置

1. linux centos系统下安装postgresql

bash 复制代码
yum install -y postgresql postgresql-server

默认直接yum install postgresql,postgresql-server会安装成系统自带的版本,如果需要安装更新的最新版本,需要先安装 PGDG 仓库再装服务端(以 PG16 为例):

bash 复制代码
# 安装PGDG仓库
yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

# 查看有哪些可用的版本:
yum repolist | grep pgdg 

# 安装server和客户端,这里的16替换成上面列出来的可用版本
sudo yum install -y postgresql16 postgresql16-server

2. 初始化数据目录生成

`/var/lib/pgsql/16/data`:

bash 复制代码
sudo /usr/pgsql-16/bin/postgresql-16-setup initdb

3. 启动服务并设置自启:

bash 复制代码
sudo systemctl enable --now postgresql-16

# 如果安装的是15
sudo systemctl enable --now postgresql-15 

完成后再在 `/var/lib/pgsql/16/data` 找到 `postgresql.conf`、`pg_hba.conf` 等配置。如果只执行了 `yum install postgresql`,那仅安装了客户端二进制,找不到目录是正常的。

4. 初始化与角色管理

bash 复制代码
    sudo -u postgres psql
    -- 在 psql 中:
    CREATE ROLE appuser WITH LOGIN PASSWORD 'StrongPass' NOSUPERUSER;
    CREATE DATABASE appdb OWNER appuser ENCODING 'UTF8';
    \q

5. 调整访问控制:

原则:pg_hba.conf 的规则是从上到下匹配,一旦命中就决定认证方式,所以需要按照"最严格→最宽松"的顺序编排,明确数据库、角色、来源网段和认证机制。常用方式包括 scram-sha-256(推荐)、md5(兼容旧客户端)、cert(客户端证书)、trust(仅限本地自动化,非常谨慎)。

bash 复制代码
# "local" is for Unix domain socket connections only
local   postgres        postgres                                trust
......
# 中间部分的保持默认值。修改replication访问控制如下
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   all             all                                     scram-sha-256
host    appdb           appuser         10.0.0.5/32             scram-sha-256
host    testdb          all             10.0.0.5/24             scram-sha-256
  • postgresql.conflisten_addresses = 'localhost,10.0.0.5'(按需添加)、port = 5432
  • pg_hba.conf:增加 host appdb appuser 10.0.0.5/32 scram-sha-256
  • 若需内网访问,添加相应网段并使用 md5/scram
bash 复制代码
# 启动与开机自启:
sudo systemctl enable --now postgresql(或 postgresql-16)。
# 验证:
psql -h localhost -U appuser -d appdb -W
# 输入设置的强密码,以执行下面语句确认连接正常。
SELECT version(); 
# 退出
\q

常用运维要点

  • 备份 :Redis 使用 BGSAVE/SAVE 或复制 dump.rdb/appendonly.aof;PostgreSQL 定期 pg_dump -Fc appdb > backup.dump,或配置 pg_basebackup 与 WAL 归档。

  • 日志与监控 :启用 Redis slowlogMONITOR 仅在调试短期使用;PostgreSQL 通过 log_min_duration_statement 记录慢查询,可配合 pg_stat_statements

  • 安全 :仅在可信网段开放端口;必要时用内置 TLS(Redis tls-port + 证书,PostgreSQL ssl = on);不在配置文件中存储明文密码,使用环境变量或 secrets 管理。

  • 服务管理 :常用命令 sudo systemctl status redis-server / postgresql; 重启后检查日志 /var/log/redis/redis-server.log 与 PostgreSQL journalctl -u postgresql

  • 排障提示

    • Redis 拒绝连接:检查 bind/protected-mode 配置、firewall;密码错误会报 NOAUTH
    • PostgreSQL 无法登陆:确认 pg_hba.conf 顺序和认证方式;修改后 sudo systemctl reload postgresql 生效。
    • 端口占用:ss -ltnp | grep 6379/5432 查清冲突进程后调整端口或释放。
相关推荐
Macbethad10 分钟前
基于WPF与.NET的洁净厂房数据孪生平台技术方案:架构、实现与SEMI标准实践
数据库·系统架构
咏方舟【长江支流】31 分钟前
【开源】跨语言·跨平台·跨数据库(6) ——一种ORM缓存的接口实现和容错处理
数据库·缓存·开源·咏方舟-长江支流·用宝框架
努力进修40 分钟前
破除工业 AI 业务落地壁垒:多模时序融合架构重塑设备全维度数据价值
数据库·人工智能·架构
静水楼台x1 小时前
spring security
java·数据库·spring
深度研习笔记1 小时前
OpenCV工业视觉进阶14|SQLite违规数据库存储+历史记录查询+Excel报表导出,完成项目商用数据闭环(验收必备)
数据库·opencv·sqlite
要开心吖ZSH3 小时前
一文搞懂:JDK 21 虚拟线程 vs N种异步方案,到底该怎么选?
java·数据库·jdk·虚拟线程
guodingdingh8 小时前
软件开发工作问题总结0718
java·开发语言·数据库
GuWenyue10 小时前
Cursor黑盒拆解!1套LangChain.js手写Mini编程Agent,自动生成React项目,效率提升60%
前端·数据库·人工智能
Miao1213112 小时前
某海外住宿平台如何在大规模场景下实现指标一致性:Minerva 指标平台实践
大数据·数据库·人工智能
CodexDave12 小时前
MySQL事务隔离级别与MVCC机制解析
前端·数据库·mysql·nginx·性能优化·负载均衡