在 Ubuntu Server 上安装与配置 PostgreSQL 数据库

记录一下如何在 Ubuntu Server 上安装 PostgreSQL,并进行基础配置,包括如何从外网访问数据库。希望能帮助需要部署 PostgreSQL 的开发者快速上手。

一、安装 PostgreSQL

在开始安装之前,先确保系统是最新的,使用以下命令:

1
2
sudo apt update
sudo apt install postgresql postgresql-contrib

安装完成后,可以通过以下命令验证 PostgreSQL 是否安装成功:

1
sudo -u postgres psql -c "SELECT version();"

如果成功输出版本信息,说明安装完成。

二、访问 PostgreSQL

可以通过以下命令访问 PostgreSQL:

1
sudo -u postgres psql

进入交互式命令行后,可以执行 PostgreSQL 的相关操作。

三、常用命令总结

以下是一些常用的 PostgreSQL 操作命令:

1. 修改当前用户密码

1
\password

2. 创建新用户

1
CREATE USER XXX WITH PASSWORD '123456';

3. 查看所有用户及权限

1
\du

4. 修改用户权限

1
ALTER USER "XXX" WITH LOGIN SUPERUSER CREATEROLE CREATEDB REPLICATION BYPASSRLS;

其中权限说明:

  • LOGIN:允许登录
  • SUPERUSER:超级管理员权限
  • CREATEROLE:创建新用户权限
  • CREATEDB:创建数据库权限
  • REPLICATION:复制权限
  • BYPASSRLS:绕过行级安全策略(RLS, Row Level Security)

5. 查看所有的表

1
\dt

四、从外网访问 PostgreSQL

1. 开放监听端口

修改 PostgreSQL 配置文件,使其监听所有网络接口:

1
sudo vim /etc/postgresql/16/main/postgresql.conf

找到以下配置项并修改:

1
listen_addresses = '*'     # 默认情况下前面有注释符号(#),需要去掉

2. 配置访问白名单

编辑 pg_hba.conf 文件,允许特定 IP 或所有 IP 访问:

1
sudo vim /etc/postgresql/16/main/pg_hba.conf

添加以下内容:

1
2
3
# IPv4 local connections:
host all all 127.0.0.1/32 scram-sha-256
host all all 0.0.0.0/0 md5

其中:

  • 127.0.0.1/32 表示仅允许本地连接
  • 0.0.0.0/0 表示允许所有 IP 访问(生产环境建议改为特定的 IP 范围)

3. 重启 PostgreSQL 服务

修改完成后,重启 PostgreSQL 服务以应用配置:

1
2
3
sudo service postgresql restart
# 或者
sudo systemctl restart postgresql

4. 开放防火墙端口

如果 PostgreSQL 部署在云服务器上,还需在云服务控制台中开放 5432 端口。

同时,在 Ubuntu Server 中开启防火墙规则:

1
2
3
sudo apt-get install iptables
iptables -I INPUT -p tcp --dport 5432 -j ACCEPT
iptables-save

五、总结

通过以上步骤,已经可以成功配置 PostgreSQL,并可从外网访问数据库。不过务必注意安全性,避免将数据库暴露在不受信任的网络环境中。