当前位置: 首页 > news >正文

CentOS7安装部署PostgreSQL

文章目录

  • CentOS7安装部署PostgreSQL
  • 一、前言
    • 1.简介
    • 2.环境
  • 二、正文
    • 1.更换镜像源
    • 2.安装和启动
    • 3.配置
    • 4.测试示例

CentOS7安装部署PostgreSQL

一、前言

1.简介

PostgreSQL 是一个基于 POSTGRES 4.2 版 的对象关系数据库管理系统 (ORDBMS), 由加州大学伯克利分校计算机科学系开发。

2.环境

Linux 发行版:CentOS-7-x86_64-DVD-2207-02.iso

PostgreSQL 版本:PostgreSQL 15

PostgreSQL 官网:https://www.postgresql.org

PostgreSQL 官网文档:https://www.postgresql.org/docs/

PostgreSQL 下载:https://www.postgresql.org/download/linux/redhat/

PostgreSQL YUM 源仓库网址:https://download.postgresql.org/pub/repos/yum/

Ubuntu文本编辑工具nano和vim快捷键:https://blog.csdn.net/u011424614/article/details/136611066

CentOS7切换镜像源和更新软件包:https://blog.csdn.net/u011424614/article/details/149867407

CentOS基础操作命令:https://blog.csdn.net/u011424614/article/details/94555916

CentOS对换home分区与root分区的存储空间:https://blog.csdn.net/u011424614/article/details/125853913

Dell R740安装CentOS:https://blog.csdn.net/u011424614/article/details/113306808

CentOS分区扩容:https://blog.csdn.net/u011424614/article/details/113275862

二、正文

1.更换镜像源

  • 具体操作参考:《CentOS7切换镜像源和更新软件包》

2.安装和启动

  • 场景说明:截止当前文章发布,CentOS7 的 YUM 源无法安装 PostgreSQL 16 和 17,只能安装 PostgreSQL 15

  • 选择版本、平台、架构,生成安装脚本:https://www.postgresql.org/download/linux/redhat/

在这里插入图片描述

  • 安装 PostgreSQL
mkdir /opt/postgresql && cd /opt/postgresql# 安装软件包仓库
# YUM 源仓库网址:https://download.postgresql.org/pub/repos/yum/
yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装软件包
yum install -y postgresql15-server
# 初始化数据库
/usr/pgsql-15/bin/postgresql-15-setup initdb
  • 服务管理
# 系统重启自启动
systemctl enable postgresql-15
# 启动服务
systemctl start postgresql-15
# 停止服务
systemctl stop postgresql-15
# 重启服务
systemctl restart postgresql-15
# 查看服务状态
systemctl status postgresql-15
  • 防火墙
# 测试环境
systemctl stop firewalld.service
systemctl disable firewalld.service# 生产环境,建议使用
firewall-cmd --zone=public --add-port=8081/tcp --permanent
firewall-cmd --reload
# 查看防火墙已开放端口
firewall-cmd --zone=public --list-ports
  • 常用目录和文件

数据目录:/var/lib/pgsql/15/data

数据库配置文件:/var/lib/pgsql/15/data/postgresql.conf

访问控制文件:/var/lib/pgsql/15/data/pg_hba.conf

3.配置

  • 编辑 postgresql.conf
vim /var/lib/pgsql/15/data/postgresql.conf

文件内容:

# 监听所有网络接口(生产环境建议结合pg_hba.conf 限制IP段)
listen_addresses = '*'
# 服务监听端口(修改默认端口可规避自动化攻击)
port = 5432      # 最大客户端连接数(需配合shared_buffers和work_mem调整)
max_connections = 1000
# 共享内存缓冲区(通常设为物理内存25%)
shared_buffers = 2GB
# 单个查询操作内存(如排序/哈希,计算公式:RAM/max_connections*0.5)
work_mem = 16MB
# 维护操作内存(VACUUM/CREATE INDEX等,建议RAM的5%)
maintenance_work_mem = 1GB# 为管理员保留的连接名额
superuser_reserved_connections = 3
# 扩展 SQL 监控长度
track_activity_query_size = 16384# 启用自动清理(建议8.0+版本始终开启)
autovacuum = on
  • 编辑 pg_hba.conf
vim /var/lib/pgsql/15/data/pg_hba.conf

文件内容:

# 新增配置,允许所有远程主机连接
# 限制特定IP或网段,例如 0.0.0.0/0 改为:192.168.88.0/24
host    all             all             0.0.0.0/0               md5
  • 修改配置后,重启 PostgreSQL 服务
systemctl restart postgresql-15

4.测试示例

  • 创建数据库和用户
# 切换到 postgres 系统用户(PostgreSQL默认超级用户)
sudo -i -u postgres# 以 postgres 身份连接PostgreSQL默认数据库
psql postgres # 创建新用户并设置密码(生产环境建议使用更复杂的密码策略)
create user pguser with password 'pgsql@123456';# 创建UTF8编码的数据库,并指定 pguser 为所有者 
create database testdb with encoding='utf8' owner=pguser;# 授予 pguser 对 testdb 数据库的全部操作权限
grant all privileges on database testdb to pguser;# 备用,非必要执行,以 pguser 身份连接 testdb 数据库(-W参数强制密码提示)
psql -U pguser-d testdb -W 
  • 创建表、插入数据、查询数据
# 连接到测试数据库
\c testdb # 创建用户表(包含基础字段和约束)
CREATE TABLE users (user_id SERIAL PRIMARY KEY,username VARCHAR(50) UNIQUE NOT NULL,password VARCHAR(100) NOT NULL CHECK (length(password) >= 8),email VARCHAR(100) UNIQUE CHECK (email ~* '^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+[.][A-Za-z]+$'),created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,is_active BOOLEAN DEFAULT TRUE
) WITH (OIDS=FALSE);COMMENT ON TABLE users IS '系统用户表';
COMMENT ON COLUMN users.password  IS '加密存储,最小长度8位';# 插入测试数据
INSERT INTO users (username, password, email, is_active) VALUES('admin', '$2a$10$xJwLHXW4ZPCH/tm2wQYzU.7JQ5LbKb8JjZJfV8nJQYd9JKlXJZrG2', 'admin@test.com',  TRUE),('guest', 'Guest#1234', 'guest@example.org',  FALSE),('tester', 'Test@5678', NULL, TRUE);# 基础查询
SELECT * FROM users ORDER BY created_at DESC;# 条件查询(活跃用户)
SELECT user_id, username, email 
FROM users 
WHERE is_active = TRUE AND created_at > '2025-01-01';# 聚合查询
SELECT COUNT(*) AS total_users, SUM(CASE WHEN is_active THEN 1 ELSE 0 END) AS active_users,COUNT(email) AS users_with_email
FROM users;
http://www.dtcms.com/a/342280.html

相关文章:

  • 《PostgreSQL内核学习:slot_deform_heap_tuple 的分支消除与特化路径优化》
  • ES_文档
  • 2025-08-21 Python进阶6——迭代器生成器与with
  • Python项目开发- 动态设置工作目录与模块搜索路径
  • strerror和perror函数的使用及其联系和区别
  • 43-Python基础语法-3
  • QWidget/QMainWindow与QLayout的布局
  • CSDN使用技巧
  • Pandas中数据分组进阶以及数据透视表
  • 链表-143.重排链表-力扣(LeetCode)
  • 微信小程序集成vant-weapp时,构建npm报错的解决办法
  • 基于springboot的中医养生管理系统
  • Pytorch基础学习--张量(生成,索引,变形)
  • 火语言 RPA 进阶功能:让自动化更实用​
  • 交易高光时刻-01
  • SOP到自动化:一种适合小型金融机构的轻量级开源工具整合方案
  • Vue3+Spring Boot技术栈,前端提交混合表单数据(普通字段+文件字段),上传文件,后端插入数据,将文件保存到数据库
  • Docker端口映射与数据卷完全指南
  • 几张PPT快速了解云原生与华为云CCE方案
  • Eureka和Nacos的原理分析
  • openEuler系统中r如何将docker安装在指定目录
  • CentOS 7常用国内源配置:阿里云、腾讯云、华为云、清华源
  • 从聚类到集成,两种实用算法框架分享
  • 医疗信息化自主可控转型的实践探索 —— 以常德二院为例
  • 为什么调用API总返回404,该如何调试
  • 35、自主移动机器人 (AMR) 调度模拟 (电子厂) - /物流与仓储组件/amr-scheduling-electronics
  • 机器学习-集成算法
  • HarmonyOS 时钟应用开发详解:从零构建实时时钟组件
  • MS17-010永恒之蓝复现
  • Prometheus+Grafana 监控体系搭建:从入门到告警配置