Linux怎么安装配置PostgreSQL关系型数据库

梦静君_2881

梦静君_2881

2026-10-22

229人浏览

原创

postgresql安装后需初始化并修改postgresql.conf和pg_hba.conf才能正常使用;ubuntu/debian用apt自动初始化,rhel/centos/rocky需手动运行对应版本的postgresql-x-setup initdb,listen_addresses与pg_hba.conf必须协同配置并reload生效,且postgres用户须显式设置密码。

linux怎么安装配置postgresql关系型数据库

装 PostgreSQL 不是“装完就能用”,关键在初始化和两处配置文件的修改——postgresql.conf 和 pg_hba.conf。跳过任一环节,远程连不上、本地连不上、甚至服务起不来,都是常态。

怎么选对安装方式(Ubuntu/Debian vs RHEL/CentOS/Rocky)

发行版决定命令和路径,不能混用:

  • Ubuntu/Debian:直接 sudo apt install postgresql postgresql-contrib,自动创建 postgres 用户、初始化数据目录(通常在 /var/lib/postgresql/*/main),服务名就是 postgresql
  • RHEL/CentOS/Rocky 8+:必须加官方源,否则装的是老旧的 9.x 或 10.x:
    sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %rhel)-x86_64/pgdg-redhat-repo-latest.noarch.rpm
    sudo dnf -qy module disable postgresql
    再装指定版本,例如 postgresql16-server;安装后必须手动运行 sudo /usr/pgsql-16/bin/postgresql-16-setup initdb,否则服务启动失败
  • CentOS 7 / RHEL 7:用 yum,仓库 URL 中把 EL-$(rpm -E %rhel) 换成 EL-7,其他流程一致

为什么 initdb 不能跳、也不能用错路径

initdb 是初始化数据库集群的唯一入口,不是“可选步骤”。它会生成 data 目录、默认配置、系统表和 postgres 数据库。常见错误:

  • 没运行就启服务 → systemctl start postgresql-16 报错 “data directory has wrong ownership” 或直接失败
  • 手动创建空 data 目录再 chown → 缺少必要文件结构,psql 连上后看不到 postgres 库或报 database "postgres" does not exist
  • 用错版本命令,比如 postgresql-15-setup initdb 却装了 16 → 找不到对应二进制,提示 command not found

正确做法:确认安装包版本(如 postgresql16-server),就用对应前缀的 setup 命令,路径由它自动推导,不手动指定 -D。

Obsidian (Linux)
Obsidian (Linux)

操作 Obsidian 库(纯 Markdown 笔记),并通过 notesmd-cli 实现自动化。

下载

listen_addresses 和 pg_hba.conf 怎么配才生效

只改 listen_addresses = '*' 不够,pg_hba.conf 才真正放行连接。两者缺一不可,且 reload 顺序有要求:

  • postgresql.conf 中改完 listen_addresses(推荐写具体内网 IP,如 'localhost,192.168.1.100',不用 * 上生产)后,必须 sudo systemctl reload postgresql-16(不是 restart)
  • pg_hba.conf 新增规则要加在已有 local 或 host 规则之后,因为匹配是自上而下;例如追加:
    host all all 192.168.1.0/24 md5
  • 改完 pg_hba.conf 同样要 reload,否则新规则不加载;如果 reload 失败,大概率是语法错误(比如少空格、多逗号)或权限不对(该文件必须属 postgres:postgres)
  • 验证是否监听成功:sudo ss -tlnp | grep 5432,看到 *:5432 或具体 IP 表示监听已开

postgres 用户没密码?远程连接一定失败

Linux 包管理器安装的 PostgreSQL 默认禁用 postgres 用户的密码认证,即使 pg_hba.conf 允许 md5,登录时也会提示 password authentication failed for user "postgres":

  • 必须先切换用户并设密码:sudo -u postgres psql -c "ALTER USER postgres PASSWORD 'YourStrongPass123';"
  • 防火墙必须放行:sudo firewall-cmd --add-port=5432/tcp --permanent && sudo firewall-cmd --reload(firewalld)或 sudo ufw allow 5432(ufw)
  • 客户端连接测试别用 psql -h localhost -U postgres,它走的是 Unix socket;要用真实 IP:psql -h 192.168.1.100 -U postgres -d postgres
  • 如果仍拒连,检查 pg_hba.conf 是否有更早的 reject 规则覆盖了你的允许行

最容易被忽略的是:改完两个配置文件后忘记 reload,或者 reload 失败却没看日志(journalctl -u postgresql-16 -n 20);reload 不报错≠配置生效,得验证监听和连接行为。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
postgresql常用命令
postgresql常用命令

postgresql常用命令psql、createdb、dropdb、createuser、dropuser、\l、\c、\dt、\d table_name、\du、\i file_name、\e和\q等。本专题为大家提供postgresql相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.10

233

5

常用的数据库软件
常用的数据库软件

常用的数据库软件有MySQL、Oracle、SQL Server、PostgreSQL、MongoDB、Redis、Cassandra、Hadoop、Spark和Amazon DynamoDB。更多关于数据库软件的内容详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.02

4569

19

postgresql常用命令有哪些
postgresql常用命令有哪些

postgresql常用命令psql、createdb、dropdb、createuser、dropuser、\l、\c、\dt、\d table_name、\du、\i file_name、\e和\q等。更详细的postgresql常用命令,大家可以访问下面的文章。

2023.11.16

647

3

postgresql常用命令介绍
postgresql常用命令介绍

postgresql常用命令有\l、\d、\d5、\di、\ds、\dv、\df、\dn、\db、\dg、\dp、\c、\pset、show search_path、ALTER TABLE、INSERT INTO、UPDATE、DELETE FROM、SELECT等。想了解更多postgresql的相关内容,可以阅读本专题下面的文章。

2023.11.20

1396

6

PostgreSQL性能优化与索引调优实战
PostgreSQL性能优化与索引调优实战

本专题面向后端开发与数据库工程师,深入讲解 PostgreSQL 查询优化原理与索引机制。内容包括执行计划分析、常见索引类型对比、慢查询优化策略、事务隔离级别以及高并发场景下的性能调优技巧。通过实战案例解析,帮助开发者提升数据库响应速度与系统稳定性。

2026.02.12

480

19

PostgreSQL 性能优化与查询执行计划实战
PostgreSQL 性能优化与查询执行计划实战

本专题深入解析PostgreSQL性能优化核心,聚焦查询执行计划的实战应用。通过EXPLAIN命令精准定位瓶颈,结合索引策略、SQL改写与参数调优,系统提升查询效率。从执行计划解读到性能调优全流程,助你掌握数据库性能诊断与优化实战能力。

2026.05.08

150

10

PostgreSQL 在 Next.js / Go 全栈架构中的工程化实践
PostgreSQL 在 Next.js / Go 全栈架构中的工程化实践

本文详解如何利用Next.js(搭配Drizzle ORM)与Go后端构建高性能应用,充分发挥PG在JSONB非结构化存储与pgvector向量检索上的优势。从数据建模到Docker容器化部署,打造支持AI时代的“One Database”工程化解决方案。

2026.05.08

901

10

PostgreSQL高级特性、内核机制与现代数据架构
PostgreSQL高级特性、内核机制与现代数据架构

本专题从MVCC并发控制与WAL日志等内核机制出发,详解JSONB、PostGIS及pgvector等高级特性。探讨如何利用单一引擎支撑关系型、向量及图数据等现代数据架构需求,助您掌握构建高并发、智能化应用的核心技术。

2026.05.08

244

10

数据库三范式
数据库三范式

数据库三范式是一种设计规范,用于规范化关系型数据库中的数据结构,它通过消除冗余数据、提高数据库性能和数据一致性,提供了一种有效的数据库设计方法。本专题提供数据库三范式相关的文章、下载和课程。

2023.06.29

2765

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习