Ubuntu 下安装与配置 PostgreSQL 18 完全指南
Ubuntu 下安装与配置 PostgreSQL 18 完全指南
摸鱼的二哈PostgreSQL 是一个功能强大的开源对象-关系型数据库系统。在 Ubuntu 环境下,您可以通过系统自带源或官方 APT 仓库进行安装。为了获取最新版本和更好的维护支持,推荐使用 PostgreSQL 官方 APT 仓库。
1. 安装方式选择
- **系统自带源 (
apt install postgresql)**:安装简单,但版本通常较旧,且在 Ubuntu 版本生命周期内不会更新到新主版本。 - 官方 APT 仓库:推荐。可以安装任意受支持的版本(如 14, 15, 16, 17, 18),并能获得官方的持续安全更新。
2. 通过官方 APT 仓库安装 PostgreSQL 18
请根据您的 Ubuntu 版本(如 Noble 24.04, Jammy 22.06 等)执行以下步骤。
1. 安装依赖与配置仓库
首先,安装公共文件包并运行官方配置脚本,这会自动处理 GPG 密钥和源列表的配置:
1 | sudo apt install -y postgresql-common |
提示:如果您需要手动配置(例如在受限环境中),可以参考官方文档导入密钥并创建
/etc/apt/sources.list.d/pgdg.sources文件,但上述自动化脚本是首选方法。
2. 安装 PostgreSQL 18
更新软件包列表并安装 PostgreSQL 18 服务器:
1 | sudo apt update |
3. 验证安装
安装完成后,检查服务状态以确保数据库正在运行:
1 | sudo systemctl status postgresql |
3. 初始配置与安全设置
安装完成后,需要进行基础配置才能安全地使用数据库。
1. 切换到 postgres 用户
PostgreSQL 安装后会自动创建一个名为 postgres 的系统用户和同名的数据库超级用户。首先切换到该用户:
1 | sudo -i -u postgres |
2. 进入数据库控制台
执行 psql 命令进入交互式终端:
1 | psql |
此时您已进入 PostgreSQL 控制台,提示符会变为 postgres=#。
3. 设置 postgres 用户密码
为了后续能通过密码连接(例如使用图形化工具或应用程序连接),建议立即设置密码:
1 | \password postgres |
输入该命令后,系统会提示您输入并确认新的强密码。
4. 退出控制台
完成设置后,输入以下命令退出 psql 和 postgres 用户环境:
1 | \q |
4. 配置远程访问(可选)
如果您需要从其他机器连接此数据库,需要修改配置文件。
1. 修改 postgresql.conf
编辑配置文件以允许监听所有 IP 地址。文件通常位于 /etc/postgresql/18/main/ 目录下:
1 | sudo nano /etc/postgresql/18/main/postgresql.conf |
找到 listen_addresses 行,修改为:
1 | listen_addresses = '*' # 监听所有 IP |
注意:如果您修改了默认端口
5432,请在此处一并修改,并在防火墙中开放新端口。
2. 修改 pg_hba.conf
编辑该文件以配置客户端认证。允许特定网段或所有 IP 通过密码连接:
1 | sudo nano /etc/postgresql/18/main/pg_hba.conf |
在文件末尾添加以下规则(例如允许所有 IPv4 连接):
1 | # TYPE DATABASE USER ADDRESS METHOD |
3. 重启服务与配置防火墙
使配置生效需要重启服务。同时,确保 Ubuntu 防火墙(UFW)已开放 PostgreSQL 端口:
1 | sudo systemctl restart postgresql |
5. 总结:连接信息速查
配置完成后,您可以使用以下参数连接数据库:
| 参数 | 值 | 说明 |
|---|---|---|
| 主机地址 | 127.0.0.1 或服务器 IP |
本地连接用 localhost |
| 端口号 | 5432 |
默认端口 |
| 数据库名 | postgres |
默认维护数据库 |
| 用户名 | postgres |
超级用户 |
| 密码 | 您设置的密码 |
执行 \password 后设定的密码 |
6. 常见问题排查
- **连接被拒绝 (Connection refused)**:请检查
postgresql.conf中的listen_addresses是否已设置为'*',并确认服务已重启。 - **密码认证失败 (Password authentication failed)**:请检查
pg_hba.conf中的认证方法是否为md5或scram-sha-256,并确保已执行systemctl restart postgresql重载配置。
