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

PostgreSQL15.x安装教程

一、介绍

PostgreSQL 是一个功能强大的开源关系型数据库系统,基于 C 语言实现,采用 PostgreSQL 许可证,这是一种自由软件许可证,允许用户自由使用、修改和分发源代码,同时支持商业用途而不设强制限制。这使得 PostgreSQL 成为广受欢迎的开源数据库解决方案。PostgreSQL 支持跨版本升级,过程通常平稳。尽管国内市场 MySQL 仍占主导地位,但许多国产数据库(如华为的 GaussDB 和腾讯的 Tbase)及云服务提供商都广泛支持 PostgreSQL。此外,pgloader 等数据迁移工具可以帮助用户高效地将数据从 MySQL、SQL Server 和 Oracle 迁移到 PostgreSQL。

官方资源

  • PostgreSQL 官方网站:PostgreSQL
  • 国内社区:PostgreSQL 国内社区

二、安装

操作系统:centos7,数据库版本:15.8

2.1 下载并执行安装

打开官方地址 PostgreSQL: Linux downloads (Red Hat family):根据服务器版本选择:

image-20240912135407752

按照上图Copy, paste and run the relevant parts of the setup script:里的命令执行:下载PpstgreSQL的rpm包

# 下载PostgreSQL
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
# 安装PostgreSQL
sudo yum install -y postgresql15-server
# 初始化数据库
sudo /usr/pgsql-15/bin/postgresql-15-setup initdb
# 设置开机启动PostgreSQL
sudo systemctl enable postgresql-15
# 启动PostgreSQL
sudo systemctl start postgresql-15

image-20240912142226939


如果报错:

错误:软件包:postgresql15-15.8-1PGDG.rhel7.x86_64 (pgdg15)
          需要:libzstd >= 1.4.0
错误:软件包:postgresql15-15.8-1PGDG.rhel7.x86_64 (pgdg15)
          需要:libzstd.so.1()(64bit)
错误:软件包:postgresql15-server-15.8-1PGDG.rhel7.x86_64 (pgdg15)
          需要:libzstd.so.1()(64bit)

解决方案:

wget https://archives.fedoraproject.org/pub/archive/epel/7/x86_64/Packages/l/libzstd-1.5.5-1.el7.x86_64.rpm
wget https://archives.fedoraproject.org/pub/archive/epel/7/x86_64/Packages/l/llvm5.0-5.0.1-7.el7.x86_64.rpm
wget https://archives.fedoraproject.org/pub/archive/epel/7/x86_64/Packages/l/llvm5.0-devel-5.0.1-7.el7.x86_64.rpm
wget https://archives.fedoraproject.org/pub/archive/epel/7/x86_64/Packages/l/llvm5.0-libs-5.0.1-7.el7.x86_64.rpm

执行:

yum install -y ./libzstd-1.5.5-1.el7.x86_64.rpm
yum install -y centos-release-scl-rh llvm5*

执行完成后,重新安装postgresql15


2.2 登录验证

PostgreSQ默认创建一个无密码用户:postgres

# 以超级用户身份登录L数据库
sudo -u postgres psql
# 查看有哪些库
\l
# 退出PostgreSQL
\q
# 修改密码,如果需要数据库连接工具连接,必须设置密码
ALTER USER postgres WITH PASSWORD '新密码';

image-20240912142756266

三、配置

配置目录: /var/lib/pgsql/15/data ,配置的核心文件都属于postgres用户,修改时需要切换为postgres用户

主要操作postgresql.conf和pg_hba.conf

image-20240912143222499

3.1 远程连接配置

配置postgresql.conf

postgresql.conf是PostgreSQL的主要配置文件,它包含了许多数据库服务器的全局设置选项。通过修改这个文件,您可以配置数据库服务器的各种参数,如监听地址、端口号、最大连接数、日志记录等。这个文件的修改通常需要重启数据库服务器才能生效。

修改/var/lib/pgsql/12/data/postgresql.conf配置文件,默认情况下,PostgreSQL只允许localhost连接,直接配置为*即可

image-20240912145248699

配置pg_hba.conf

pg_hba.conf是PostgreSQL的身份验证配置文件,它定义了哪些客户端可以连接到数据库服务器以及如何进行身份验证。通过修改这个文件,您可以控制访问数据库的权限,配置不同用户的身份验证方法,以及定义访问控制规则。修改pg_hba.conf文件后,通常需要重新加载配置或重启数据库服务器才能使更改生效。

修改/var/lib/pgsql/12/data/pg_hba.conf配置文件,支持远程用户访问

image-20240912145748487

模板参数说明:

  • type:local代表本地连接,host代表可以指定连接的ADDRESS
  • database:数据库名,如果写all,代表所有库都可以连接
  • user:连接的用户,可以写all,代表所有用户
  • address:代表那些IP地址可以连接
  • method:加密方式,一般直接md5

重启PostgreSQL

修改完上面的两个配置文件,都需要重启下:

systemctl restart postgresql-15

navicat连接测试

image-20240912150447918

3.2 数据库的日志配置

配置postgresql.conf

image-20240912151054624

# 代表日志是开启的。
logging_collector = on
# 日志存放的路径,默认放到当前目录下的log里
log_directory = 'log'
# 日志的文件名,默认是postgresql为前缀,%a表示把星期作为后缀
log_filename = 'postgresql-%a.log'
# 日志文件会被覆盖
log_truncate_on_rotation = on
# 一天一个日志文件
log_rotation_age = 1d
# 日志文件,没有大小限制
log_rotation_size = 0

3.3 设置wal_level级别(选用)

此参数是为了Flink 能够捕捉数据更改并将其同步到 MySQL

wal_level 参数控制 PostgreSQL 生成的 WAL 信息的详细程度。设置为 logical 时,PostgreSQL 会记录足够的信息来支持逻辑复制,否则PostgreSQL 无法提供所需的变更数据流

修改postgresql.conf,增加wal_level = logical,然后执行systemctl restart postgresql-15重启PostgreSQL

image-20240912151729978

wal_level 的设置会影响 PostgreSQL 的日志记录级别,具体分为三种:

  1. minimal:记录最基本的 WAL 信息,仅用于崩溃恢复,无法支持逻辑复制
  2. replica:记录额外的 WAL 信息,支持物理复制,但仍不足以进行逻辑复制
  3. logical:记录全部 WAL 信息,包括逻辑复制所需的数据变更,适用于 Flink 和其他逻辑复制工具

3.4 创建用户并授权

  1. 创建用户:

    CREATE USER newuser WITH PASSWORD 'password';
    
  2. 授予数据库全部权限:

    GRANT ALL PRIVILEGES ON DATABASE mydatabase TO newuser;
    
  3. 授予表、序列和函数权限(在连接到 mydatabase 后):

    \c mydatabase
    GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO newuser;
    GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO newuser;
    GRANT ALL PRIVILEGES ON ALL FUNCTIONS IN SCHEMA public TO newuser;
    
  4. 确保权限应用到新对象:

    ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO newuser;
    ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON SEQUENCES TO newuser;
    ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON FUNCTIONS TO newuser;
    

http://www.kler.cn/a/308316.html

相关文章:

  • C++编程技巧与规范-类和对象
  • 传奇996_21——龙岭事件
  • npm list @types/node 命令用于列出当前项目中 @types/node 包及其依赖关系
  • 排序算法 - 冒泡
  • Python 连接 Redis 进行增删改查(CRUD)操作
  • JVM详解:JVM的系统架构
  • Vert.x初探
  • react native(expo)选择图片/视频并上传阿里云oss
  • Java数据存储结构——二叉查找树
  • 在linux注册服务并开机启动springboot程序
  • 使用canal.deployer-1.1.7和canal.adapter-1.1.7实现mysql数据同步
  • 探索轻量级语言模型 GPT-4O-mini 的无限可能
  • 面试常见题之PG数据库
  • 【工作流集成】springboot+vue工作流审批系统(实际源码)
  • 大数据之spark算子简介
  • SSM 框架 个人使用习惯 详细
  • vue3 + vite2 vue 打包后router-view空白
  • 用最新方案为数据密集型AI供能:将服务器农场沉入旧金山湾
  • 【YashanDB知识库】数据库获取时间和服务器时间不一致
  • Facebook的虚拟现实功能简介:社交网络的新前沿
  • 腾讯地图SDK Android版开发 11 覆盖物示例 4 线
  • 什么是蜘蛛池?有什么作用
  • 【原创】java+swing+mysql长途客车售票管理系统设计与实现
  • CACTI 0.8.7 迁移并升级到 1.2.7记录
  • 【零散技术】详解Odoo17邮件发送(一)
  • Unity 编辑器设置中文