Linux怎么安装PostgreSQL_Linux如何部署PG数据库【方法】

胖涛小哥_9920

胖涛小哥_9920

2026-04-06

995人浏览

原创

用系统包管理器安装最稳妥,自动解决依赖并初始化集群;必须以postgres用户执行管理命令;远程访问需修改postgresql.conf的listen_addresses和pg_hba.conf的认证规则并重启服务。

linux怎么安装postgresql_linux如何部署pg数据库【方法】

直接用系统包管理器安装最稳妥

绝大多数 Linux 发行版的官方仓库都提供了 PostgreSQL 的预编译包,版本稳定、依赖自动解决、服务配置开箱即用。别急着去官网下源码或 Docker 镜像——除非你明确需要特定小版本或自定义编译选项。

常见发行版命令如下:

  • Ubuntu/Debian:sudo apt update && sudo apt install postgresql postgresql-contrib
  • CentOS/RHEL 8+:sudo dnf install postgresql-server postgresql-contrib
  • CentOS/RHEL 7:sudo yum install postgresql96-server postgresql96-contrib(注意版本号后缀)

装完会自动初始化数据库集群(默认在 /var/lib/pgsql/data 或 /var/lib/postgresql/*/main),并注册 postgresql 系统服务。不用手动跑 initdb ——包管理器已帮你做了。

启动服务前必须切换到 postgres 用户

PostgreSQL 默认禁止 root 直接操作数据库,所有初始化后的管理命令(如创建用户、建库)都要求以系统用户 postgres 身份执行。直接 sudo -u postgres psql 是唯一安全入口,跳过这步大概率遇到 psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed 或权限拒绝。

常用操作示例:

  • 启动服务:sudo systemctl start postgresql(部分旧版用 postgresql-* 服务名)
  • 切用户进 SQL shell:sudo -u postgres psql
  • 创建新数据库用户:sudo -u postgres createuser --interactive --pwprompt myuser
  • 创建数据库:sudo -u postgres createdb mydb

别用 su - postgres 再执行命令——某些发行版(如 RHEL)会限制该用户登录 shell,sudo -u 才是可靠方式。

修改监听地址和认证方式才能远程访问

默认安装只监听本地 127.0.0.1,且 pg_hba.conf 仅允许 peer 或 ident 认证,这意味着从其他机器连不上,甚至本机用密码也登不了 psql -U myuser -h localhost。

必须改两处配置(路径通常为 /etc/postgresql/*/main/ 或 /var/lib/pgsql/data/):

  • 编辑 postgresql.conf,找到 listen_addresses 行,改为:listen_addresses = 'localhost,192.168.1.100'(填服务器实际 IP,或 '*' 表示所有接口,生产环境慎用)
  • 编辑 pg_hba.conf,在末尾加一行:host all all 192.168.1.0/24 md5(允许指定网段用密码连接)

改完必须重启服务:sudo systemctl restart postgresql。不 reload 不生效——pg_hba.conf 只在启动或 reload 时加载,而 listen_addresses 必须重启。

密码连不上?检查 pg_hba.conf 的匹配顺序和用户权限

pg_hba.conf 是按**从上到下顺序匹配**的,一旦某条规则匹配成功,就不再往后看。很多人加了允许远程的 host 行,但前面还留着一条 local all all peer 或更宽泛的 host all all 0.0.0.0/0 reject,结果密码永远不生效。

验证当前生效规则的方法:

  • 连上 psql 后执行:SELECT * FROM pg_hba_file_rules();(需 PostgreSQL ≥ 10)
  • 查日志:sudo tail -f /var/log/postgresql/*.log,失败时会明确写 “connection rejected by pg_hba.conf” 并指出匹配的行号

另外确保目标用户有登录权限:在 psql 中运行 \du,确认 myuser 的 rolcanlogin 列为 t;若为 f,需执行:ALTER USER myuser WITH LOGIN;

真正麻烦的不是安装步骤,而是配置文件里那些看似无关紧要的空格、注释位置、IP 段掩码长度,还有 peer 和 md5 认证混用时的隐式优先级——这些细节错一处,连接就卡死,且错误提示几乎不告诉你具体哪行错了。

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

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

下载

相关标签:

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

相关专题

更多
数据分析工具有哪些
数据分析工具有哪些

数据分析工具有Excel、SQL、Python、R、Tableau、Power BI、SAS、SPSS和MATLAB等。详细介绍:1、Excel,具有强大的计算和数据处理功能;2、SQL,可以进行数据查询、过滤、排序、聚合等操作;3、Python,拥有丰富的数据分析库;4、R,拥有丰富的统计分析库和图形库;5、Tableau,提供了直观易用的用户界面等等。

2023.10.12

3943

8

SQL中distinct的用法
SQL中distinct的用法

SQL中distinct的语法是“SELECT DISTINCT column1, column2,...,FROM table_name;”。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.27

851

4

SQL中months_between使用方法
SQL中months_between使用方法

在SQL中,MONTHS_BETWEEN 是一个常见的函数,用于计算两个日期之间的月份差。想了解更多SQL的相关内容,可以阅读本专题下面的文章。

2024.02.23

1029

5

SQL出现5120错误解决方法
SQL出现5120错误解决方法

SQL Server错误5120是由于没有足够的权限来访问或操作指定的数据库或文件引起的。想了解更多sql错误的相关内容,可以阅读本专题下面的文章。

2024.03.06

5781

10

sql procedure语法错误解决方法
sql procedure语法错误解决方法

sql procedure语法错误解决办法:1、仔细检查错误消息;2、检查语法规则;3、检查括号和引号;4、检查变量和参数;5、检查关键字和函数;6、逐步调试;7、参考文档和示例。想了解更多语法错误的相关内容,可以阅读本专题下面的文章。

2024.03.06

2723

4

oracle数据库运行sql方法
oracle数据库运行sql方法

运行sql步骤包括:打开sql plus工具并连接到数据库。在提示符下输入sql语句。按enter键运行该语句。查看结果,错误消息或退出sql plus。想了解更多oracle数据库的相关内容,可以阅读本专题下面的文章。

2024.04.07

5760

11

sql中where的含义
sql中where的含义

sql中where子句用于从表中过滤数据,它基于指定条件选择特定的行。想了解更多where的相关内容,可以阅读本专题下面的文章。

2024.04.29

7621

6

sql中删除表的语句是什么
sql中删除表的语句是什么

sql中用于删除表的语句是drop table。语法为drop table table_name;该语句将永久删除指定表的表和数据。想了解更多sql的相关内容,可以阅读本专题下面的文章。

2024.04.29

1030

5

sql中删除一列的命令是什么
sql中删除一列的命令是什么

在sql中,使用alter table语句可以删除一列,语法为:alter table table_name drop column column_name。想了解更多sql的相关内容,可以阅读本专题下面的文章。

2024.04.29

912

5

热门下载

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

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.4万人学习