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 查清冲突进程后调整端口或释放。
相关推荐
赵思空2 小时前
window docker 安装 mysql 数据库,及不能连接问题
数据库·mysql·docker
victor_1772 小时前
sql在线练习网站
数据库·sql
hgz07102 小时前
数据库索引设计
数据库
汽车仪器仪表相关领域2 小时前
ZDT-III 通用电机测试系统
数据库·算法·单元测试·压力测试·可用性测试
GHL2842710902 小时前
redis编译调试(linux)
linux·数据库·redis
robinson19882 小时前
Oracle-PG-崖山全表扫描基础算子性能对比
数据库·oracle·全表扫描·崖山·基础算子性能
九皇叔叔2 小时前
MySQL 数据库 隔离级别 详解
数据库·mysql
TG:@yunlaoda360 云老大3 小时前
华为云国际站代理商IoTDA的设备生命周期管理功能如何保障数据安全?
服务器·数据库·华为云
lkbhua莱克瓦243 小时前
基础-SQL的通用语法、分类以及DDL
开发语言·数据库·笔记·sql·mysql·ddl