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 查清冲突进程后调整端口或释放。
相关推荐
聚美智数21 小时前
图片水印-图片剪裁-图片缩放API接口介绍
java·服务器·数据库
JavaPub-rodert21 小时前
Go 后台如何同时兼容 MySQL、PostgreSQL、SQLite 和 SQL Server?从 ShiyuAdmin 看 GORM 多数据库适配
数据库·mysql·postgresql·golang·javapub·王仕宇
瀚高PG实验室21 小时前
SQL优化案例:存储过程、复杂SQL拆成简单SQL提升整体性能
数据库·sql·postgresql·瀚高数据库
winfredzhang21 小时前
从零构建家庭照片管理系统:Django 模块化单体实战,以及我踩到的 4 个真实坑
python·postgresql·django·sqlite·bootsrap
Wang's Blog1 天前
PostgreSQL笔记36:执行计划基础解读与优化器成本模型
数据库·笔记·postgresql
Wang's Blog1 天前
PostgreSQL笔记35:索引常见问题诊断与解决方案全景解析
数据库·笔记·postgresql
LayZhangStrive1 天前
后端通识 - 后端开发职位接触的开发流程
数据库·prd·技术方案·库表设计·后端开发流程
爱吃火鸡面呀1 天前
MySQL 查询与函数详解:从基础条件筛选到高级字符处理
数据库·mysql
奥莱维1 天前
KNX酒店方案_KNX专用线与高端酒店技术逻辑
java·服务器·前端·数据库
牛大兵1 天前
机顶盒获取局域网已经使用IP,开放的端口号,扫描摄像头,NAS,共享主机等开机自启局域网全量扫描工具
数据库·网络协议·tcp/ip