
在 Ubuntu 上安装 PostgreSQL 数据库
本文将指导您在 Ubuntu 系统上安装和配置 PostgreSQL 数据库,包括安装过程、安全设置、用户管理和远程连接配置。
一、安装 PostgreSQL
1.1 更新包列表
首先,更新系统的包列表:
sudo apt update
1.2 安装 PostgreSQL
1.2.1 方法一:通过 PostgreSQL 官方 APT 仓库安装(推荐)
PostgreSQL 官方维护的 APT 仓库提供了所有支持版本的 PostgreSQL,通过以下步骤可以配置该仓库:
自动配置方式(推荐):
sudo apt install -y postgresql-common
sudo /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh
手动配置方式:
# 安装必要的依赖
sudo apt install curl ca-certificates
# 创建目录并下载签名密钥
sudo install -d /usr/share/postgresql-common/pgdg
sudo curl -o /usr/share/postgresql-common/pgdg/apt.postgresql.org.asc --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc
# 创建仓库配置文件
sudo sh -c 'echo "deb [signed-by=/usr/share/postgresql-common/pgdg/apt.postgresql.org.asc] https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
# 更新包列表
sudo apt update
# 安装最新版本的 PostgreSQL
sudo apt -y install postgresql
如果需要安装特定版本(如 PostgreSQL 16),使用:
sudo apt -y install postgresql-16
1.2.2 方法二:通过 Ubuntu 默认仓库安装
如果您不需要最新版本,可以直接通过 Ubuntu 默认仓库安装:
sudo apt install postgresql
注意
Ubuntu 默认仓库中的 PostgreSQL 版本可能不是最新的。如果需要特定版本,建议使用官方 APT 仓库安装。
1.3 管理 PostgreSQL 服务
1.3.1 检查 PostgreSQL 服务状态
sudo systemctl status postgresql
1.3.2 启动 PostgreSQL 服务
sudo systemctl start postgresql
1.3.3 停止 PostgreSQL 服务
sudo systemctl stop postgresql
1.3.4 重启 PostgreSQL 服务
sudo systemctl restart postgresql
1.3.5 设置 PostgreSQL 开机自启动
sudo systemctl enable postgresql
二、设置 postgres 用户密码
PostgreSQL 安装后会创建一个名为 postgres
的系统用户,同时创建一个同名的数据库超级用户,默认没有设置密码。
2.1 为 postgres 用户设置密码
# 切换到 postgres 用户
sudo -i -u postgres
# 进入 PostgreSQL 交互式终端
psql
# 为 postgres 用户设置密码(在 PostgreSQL 命令行中)
\password postgres
# 按提示输入并确认密码
# 退出 psql
\q
2.2 验证 postgres 用户登录
psql -U postgres -h localhost
输入密码后,出现 PostgreSQL 提示符表示登录成功。
三、创建具有管理权限的用户
3.1 登录 PostgreSQL
sudo -i -u postgres
psql
3.2 创建用户并授权
-- 创建用户 'purexua',设置密码
CREATE USER purexua WITH PASSWORD '强密码';
-- 赋予创建数据库的权限
ALTER USER purexua CREATEDB;
-- 如果需要赋予超级用户权限(相当于 postgres 权限)
ALTER USER purexua WITH SUPERUSER;
-- 验证用户创建
\du
-- 退出 PostgreSQL
\q
注意
请将 ‘purexua’ 替换为实际的用户名。
密码应使用强密码,并妥善保管。
在生产环境中,建议遵循最小权限原则,仅授予必要的权限。
四、配置 PostgreSQL 远程连接
4.1 编辑 PostgreSQL 主配置文件
sudo nano /etc/postgresql/[版本号]/main/postgresql.conf
例如,如果安装的是 PostgreSQL 16,则命令为:
sudo nano /etc/postgresql/16/main/postgresql.conf
4.2 修改监听地址
找到 listen_addresses
参数,取消注释并设置为:
listen_addresses = '*'
4.3 编辑客户端认证配置文件
sudo nano /etc/postgresql/[版本号]/main/pg_hba.conf
4.4 添加远程连接配置
在文件末尾添加以下行,允许从特定网络或任何地址进行连接:
# 允许特定网段使用密码验证连接所有数据库
host all all 192.168.1.0/24 scram-sha-256
# 允许任何地址使用密码验证连接(谨慎使用)
host all all 0.0.0.0/0 scram-sha-256
注意
将
192.168.1.0/24
替换为您的实际网络段。出于安全考虑,建议限制为特定的 IP 或网段,避免使用
0.0.0.0/0
。
4.5 重启 PostgreSQL 服务
sudo systemctl restart postgresql
4.6 配置防火墙
如果您使用 UFW 防火墙,需要开放 PostgreSQL 端口(默认 5432):
sudo ufw allow 5432/tcp
4.7 验证远程连接
从远程计算机上验证连接:
psql -h 服务器IP -U purexua -d postgres
输入密码后,出现 PostgreSQL 提示符表示连接成功。