记录一下如何在 Ubuntu Server 上安装 PostgreSQL,并进行基础配置,包括如何从外网访问数据库。希望能帮助需要部署 PostgreSQL 的开发者快速上手。
一、安装 PostgreSQL
在开始安装之前,先确保系统是最新的,使用以下命令:
1 | sudo apt update |
安装完成后,可以通过以下命令验证 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 | # IPv4 local connections: |
其中:
127.0.0.1/32表示仅允许本地连接0.0.0.0/0表示允许所有 IP 访问(生产环境建议改为特定的 IP 范围)
3. 重启 PostgreSQL 服务
修改完成后,重启 PostgreSQL 服务以应用配置:
1 | sudo service postgresql restart |
4. 开放防火墙端口
如果 PostgreSQL 部署在云服务器上,还需在云服务控制台中开放 5432 端口。
同时,在 Ubuntu Server 中开启防火墙规则:
1 | sudo apt-get install iptables |
五、总结
通过以上步骤,已经可以成功配置 PostgreSQL,并可从外网访问数据库。不过务必注意安全性,避免将数据库暴露在不受信任的网络环境中。