Skip to content

安装PostgreSQL

1. 在线安装Postgresql

当前最新稳定版PG数据库为Postgresql17,配置使用YUM源:

sh
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm

禁用内置的pg安装源:

sh
sudo dnf -qy module disable postgresql

安装PostgreSQL服务端:

sh
sudo dnf install -y postgresql17-server

初始化数据库:

sh
sudo /usr/pgsql-17/bin/postgresql-17-setup initdb

设置开机自启并启动pg服务:

sh
sudo systemctl enable postgresql-17 --now

查看postgresql运行状态:

sh
[jack@Node01 software]$ sudo systemctl status postgresql-17
 postgresql-17.service - PostgreSQL 17 database server
     Loaded: loaded (/usr/lib/systemd/system/postgresql-17.service; enabled; preset: disabled)
     Active: active (running) since Fri 2025-09-19 07:37:14 CST; 7s ago
       Docs: https://www.postgresql.org/docs/17/static/
    Process: 1953 ExecStartPre=/usr/pgsql-17/bin/postgresql-17-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS)
   Main PID: 1960 (postgres)
      Tasks: 7 (limit: 50327)
     Memory: 17.7M
        CPU: 161ms
     CGroup: /system.slice/postgresql-17.service
             ├─1960 /usr/pgsql-17/bin/postgres -D /var/lib/pgsql/17/data/
             ├─1961 "postgres: logger "
             ├─1962 "postgres: checkpointer "
             ├─1963 "postgres: background writer "
             ├─1965 "postgres: walwriter "
             ├─1966 "postgres: autovacuum launcher "
             └─1967 "postgres: logical replication launcher "

9月 19 07:37:13 Node01 systemd[1]: Starting PostgreSQL 17 database server...
9月 19 07:37:14 Node01 postgres[1960]: 2025-09-19 07:37:14.052 CST [1960] 日志:  日志输出重定向到日志收集进程
9月 19 07:37:14 Node01 postgres[1960]: 2025-09-19 07:37:14.052 CST [1960] 提示:  后续的日志输出将出现在目录 "log"中.
9月 19 07:37:14 Node01 systemd[1]: Started PostgreSQL 17 database server.

2. 配置Postgresql

安装时会自动创建名为postgres的用户,配置postgres系统用户密码:

sh
sudo passwd postgres

默认用户是postgres, 没有密码并且只能本地登录

2.1 配置密码

sh
# 切换postgres用户
su  postgres - 
# 登录数据库(无需密码,直接进入)
psql

执行SQL命令修改密码:

sh
postgres=# ALTER USER postgres WITH PASSWORD '123456';
ALTER ROLE
## 顺便看下有那些数据库
postgres=# \l
                                                         数据库列表
   名称    |  拥有者  | 字元编码 | Locale Provider |  校对规则   |    Ctype    | Locale | ICU Rules |       存取权限        
-----------+----------+----------+-----------------+-------------+-------------+--------+-----------+-----------------------
 postgres  | postgres | UTF8     | libc            | zh_CN.UTF-8 | zh_CN.UTF-8 |        |           | 
 template0 | postgres | UTF8     | libc            | zh_CN.UTF-8 | zh_CN.UTF-8 |        |           | =c/postgres          +
           |          |          |                 |             |             |        |           | postgres=CTc/postgres
 template1 | postgres | UTF8     | libc            | zh_CN.UTF-8 | zh_CN.UTF-8 |        |           | =c/postgres          +
           |          |          |                 |             |             |        |           | postgres=CTc/postgres
(3 行记录)
## 退出psql
postgres=# \q

2.2 配置远程连接

  1. 设置postgresql.conf
sh
## 使用postgres修改配置文件
su  postgres - 
vim /var/lib/pgsql/17/data/postgresql.conf

找到以下配置:
alt text 解开这两行注释并更新:

ini
listen_addresses = '*'
port = 5432
  1. 设置pg_hba.conf
sh
vim /var/lib/pgsql/17/data/pg_hba.conf

找到以下配置: alt text 注释掉原有的这两行,新增以下两行:

ini
host all all 0.0.0.0/0 md5
host all all ::0/0       md5
  1. 退出postgres用户,重启postresql
sh
[jack@Node01 software]$ sudo systemctl restart postgresql-17