在Ubuntu上安装PostgreSQL最稳妥的方式是通过官方APT仓库配置安装,这能确保你获得最新的安全补丁和版本支持,而非使用系统默认仓库中可能过时的旧版本。
很多开发者在初次接触Linux服务器时,往往直接运行 apt install postgresql,虽然简单,但这种方法容易陷入版本滞后或配置混乱的困境,对于追求生产环境稳定性的团队来说,掌握官方源安装流程是基本功,本文将拆解从环境准备到服务验证的全流程,帮助你避开常见坑点,构建一个健壮的数据库基础。
Ubuntu安装PostgreSQL最佳实践路径
选择正确的安装源是成功的第一步,Ubuntu自带的软件源虽然方便,但其中的PostgreSQL版本通常比官方最新版本落后几个大版本,对于需要新特性或特定安全修复的用户,直接添加PostgreSQL官方APT仓库是业内共识认为的最佳方案。
配置官方APT仓库
你需要确保系统拥有必要的工具来添加新的软件源,打开终端,执行以下命令安装GPG密钥和依赖项:
sudo apt update sudo apt install -y gnupg2 lsb-release curl
导入PostgreSQL项目的签名密钥,并添加官方仓库地址,这一步至关重要,它保证了后续下载的软件包来源可信且为最新。
curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo gpg --dearmor -o /usr/share/keyrings/postgresql-archive-keyring.gpg echo "deb [signed-by=/usr/share/keyrings/postgresql-archive-keyring.gpg] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list
执行完上述命令后,再次更新软件包列表,以刷新本地缓存中的新仓库信息。

sudo apt update
选择并安装特定版本
你可以查看当前可用的PostgreSQL版本了,最新的LTS(长期支持)版本是生产环境的首选,如果你希望安装PostgreSQL 16,可以执行:
sudo apt install -y postgresql-16
如果你不确定该选哪个版本,建议查阅官方文档中的版本支持矩阵,多数情况下,选择带有”LTS”标识的版本能获得更长的技术支持周期,安装过程会自动创建名为 postgres 的系统用户和默认数据库集群。
初始化与基础配置详解
安装完成后,服务并不会立即自动启动到生产就绪状态,你需要了解如何管理这个服务,并进行初步的安全加固。
服务管理与状态检查
PostgreSQL在Ubuntu上通常由systemd管理,你可以使用以下命令来控制服务:
- 启动服务:
sudo systemctl start postgresql - 设置开机自启:
sudo systemctl enable postgresql - 检查运行状态:
sudo systemctl status postgresql
如果状态显示为 active (running),说明服务已正常启动,如果遇到错误,可以通过 journalctl -u postgresql 查看详细日志。
切换用户与访问数据库
PostgreSQL默认创建一个名为 postgres 的操作系统用户,要进入数据库交互界面,你需要切换到该用户。
sudo -i -u postgres psql
进入 psql 提示符后,你可以执行SQL命令,查看当前版本:
SELECT version();
退出交互界面只需输入

q 并回车。
配置远程访问权限
默认情况下,PostgreSQL只允许本地连接,如果你需要从其他机器访问数据库,需要修改两个关键配置文件:postgresql.conf 和 pg_hba.conf。
编辑 postgresql.conf,找到 listen_addresses 参数,将其修改为:
listen_addresses = ''
这意味着监听所有网络接口,编辑 pg_hba.conf,添加允许特定IP或网段访问的规则,允许来自 168.1.0/24 网段的连接:
host all all 192.168.1.0/24 md5
修改完成后,重启服务使配置生效:
sudo systemctl restart postgresql
常见问题排查与优化建议
在实际操作中,你可能会遇到连接失败或性能问题,以下是针对常见场景的解决方案。
防火墙配置
Ubuntu默认使用UFW防火墙,如果你启用了防火墙,必须开放PostgreSQL的默认端口 5432。
sudo ufw allow 5432/tcp sudo ufw reload
确保你的云服务器安全组也放行了该端口,否则即使系统防火墙开放,外部依然无法连接。
内存与连接数调优
默认配置适用于开发环境,但在生产环境中,可能需要调整 shared_buffers 和 max_connections。
- shared_buffers:建议设置为物理内存的25%左右,但不要超过总内存的40%。
- max_connections:根据应用并发量调整,默认通常为100,如果应用连接数较多,可适当增加,但需注意内存消耗。

这些参数位于 /etc/postgresql/16/main/postgresql.conf 中,修改后务必重启服务。
Ubuntu安装PostgreSQL常见疑问解答
Ubuntu安装PostgreSQL与MySQL相比有何优劣?
PostgreSQL以严格的SQL标准遵循性和强大的扩展能力著称,适合复杂查询和事务密集型应用,MySQL则在读写分离生态和简单CRUD场景下拥有更广泛的社区支持,业内专家指出,对于需要JSONB支持、地理空间数据(PostGIS)或复杂聚合分析的场景,PostgreSQL往往是更优选择,而在高并发简单读取、对写入速度要求极高的互联网应用中,MySQL依然占据主导地位,选择取决于具体业务需求,而非绝对的性能高低。
如何备份和恢复PostgreSQL数据库?
PostgreSQL提供了强大的命令行工具 pg_dump 和 pg_restore,备份单个数据库的命令如下:
pg_dump -U postgres -d mydb > mydb_backup.sql
恢复数据库时,先创建空数据库,然后导入:
createdb -U postgres mydb_new psql -U postgres -d mydb_new < mydb_backup.sql
对于生产环境,建议使用 pg_basebackup 进行物理备份,并结合WAL归档实现时间点恢复(PITR),以确保数据安全性。
PostgreSQL在Ubuntu上的默认数据目录在哪里?
默认数据目录通常位于 /var/lib/postgresql/16/main/(版本号可能因安装版本而异),该目录包含数据库文件、事务日志和配置文件,切勿手动删除或移动该目录下的文件,否则会导致数据库损坏,如需更改数据目录,需在 postgresql.conf 中修改 data_directory 参数,并相应调整文件系统权限。
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/423494.html
