Linux上安装PostgreSQL 14

1. 前言

1.1. 本文主要内容

  • PostgreSQL 14 安装(yum)
  • PostgreSQL 14 基础配置
  • PostgreSQL 14 远程访问配置
  • PostgreSQL 基础管理

1.2. 本文环境信息与适用范围

适用范围

OS: Centos 7 or Fedora 39
PostgreSQl 14.6

2. PostgreSQL安装

2.1. 导入yum源

1
2
3
4
5
6
# Install the repository RPM:
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
# fedora 39
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/F-39-x86_64/pgdg-fedora-repo-latest.noarch.rpm
# fedora 40
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/F-40-x86_64/pgdg-fedora-repo-latest.noarch.rpm

2.2. 安装PostgreSQL服务

1
2
# Install PostgreSQL:
sudo dnf install -y postgresql14-server

2.3. 初始化数据库

1
2
# Optionally initialize the database:
sudo /usr/pgsql-14/bin/postgresql-14-setup initdb

2.4. 启动PostgreSQL服务

1
2
3
4
5
# 设置PostgreSQL服务为开机启动, 并立即启动postgresql服务
sudo systemctl enable --now postgresql-14

# 查看postgresql的状态
systemctl status postgresql-14

3. 修改postgres账号密码

PostgreSQL安装成功之后,会默认创建一个名为postgres的Linux用户,初始化数据库后,会有名为postgres的数据库,来存储数据库的基础信息,例如用户信息等等,相当于MySQL中默认的名为mysql数据库。

postgres数据库中会初始化一名超级用户postgres

为了方便我们使用postgres账号进行管理,我们可以修改该账号的密码

3.1. 如何修改postgres账号密码

进入PostgreSQL命令行

通过su命令切换linux用户为postgres会自动进入命令行

1
2
sudo bash
su - postgres

启动SQL Shell

1
psql

修改密码

1
ALTER USER postgres WITH PASSWORD 'NewPassword';

4. 配置远程访问

4.1. 开放端口

1
2
3
4
5
6
7
8
9
10
# 检查防火墙是否开启
sudo firewall-cmd --state

# 显示默认区域的所有规则
sudo firewall-cmd --list-all

# 如果开启, 需放行5432端口
sudo firewall-cmd --add-port=5432/tcp --permanent
sudo firewall-cmd --reload

4.2. 修改IP绑定

1
2
3
4
5
6
#修改配置文件
sudo vi /var/lib/pgsql/14/data/postgresql.conf

#将监听地址修改为*
#默认listen_addresses配置是注释掉的,所以可以直接在配置文件开头加入该行
listen_addresses='*'

4.3. 允许所有IP访问

1
2
3
4
5
#修改配置文件
sudo vi /var/lib/pgsql/14/data/pg_hba.conf

#在问号尾部加入
host all all 0.0.0.0/0 md5

4.4. 重启PostgreSQL服务

1
2
#重启PostgreSQL服务
sudo systemctl restart postgresql-14

配置完成后即可使用客户端进行连接

5. PostgreSQL 基础管理

启动SQL shell:

1
2
su postgres
psql

数据库相关语法示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#创建数据库
CREATE DATABASE mydb;

#查看所有数据库
\l

#切换当前数据库
\c mydb

#创建表
CREATE TABLE test(id int,body varchar(100));

#查看当前数据库下所有表
\d

用户与访问授权语法示例

1
2
3
4
5
6
7
8
9
10

#新建用户
CREATE USER test WITH PASSWORD 'test';

#赋予指定账户指定数据库所有权限
GRANT ALL PRIVILEGES ON DATABASE mydb TO test;

#移除指定账户指定数据库所有权限
REVOKE ALL PRIVILEGES ON DATABASE mydb TO test

权限代码:SELECT、INSERT、UPDATE、DELETE、TRUNCATE、REFERENCES、TRIGGER、CREATE、CONNECT、TEMPORARY、EXECUTE、USAGE

6. 如何卸载postgreSQL

1
2
3

dnf remove postgresql14-server-14.10-2PGDG.rhel8.x86_64

如果要再次重装postgresql,需要将/var/lib/pgsql下的数据备份,然后删除/var/lib/pgsql目录

7. 问题排查

  1. 日志文件的位置
    postgresql-14在REHL系列服务器的位置为
    /var/lib/pgsql/14/data/log

  2. 查看服务状态

    1
    systemctl status postgresql-14
  3. 查看系统日志

    1
    journalctl -u postgresql-14

8. 参考文档

在CentOS 7上安装&配置PostgreSQL 12

Linux downloads (Red Hat family)