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 查清冲突进程后调整端口或释放。
相关推荐
李广坤18 小时前
MySQL 大表字段变更实践(改名 + 改类型 + 改长度)
数据库
爱可生开源社区2 天前
2026 年,优秀的 DBA 需要具备哪些素质?
数据库·人工智能·dba
随逸1772 天前
《从零搭建NestJS项目》
数据库·typescript
加号33 天前
windows系统下mysql多源数据库同步部署
数据库·windows·mysql
シ風箏3 天前
MySQL【部署 04】Docker部署 MySQL8.0.32 版本(网盘镜像及启动命令分享)
数据库·mysql·docker
李慕婉学姐3 天前
Springboot智慧社区系统设计与开发6n99s526(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·后端
百锦再3 天前
Django实现接口token检测的实现方案
数据库·python·django·sqlite·flask·fastapi·pip
tryCbest3 天前
数据库SQL学习
数据库·sql
jnrjian3 天前
ORA-01017 查找机器名 用户名 以及library cache lock 参数含义
数据库·oracle
十月南城3 天前
数据湖技术对比——Iceberg、Hudi、Delta的表格格式与维护策略
大数据·数据库·数据仓库·hive·hadoop·spark