如何在 CentOS 8 上安装 PostgreSQL

2023-11-13

PostgreSQL 或 Postgres 是一种开源通用对象关系数据库管理系统,具有许多高级功能,允许您构建容错环境或复杂的应用程序。

在本指南中,我们将讨论如何在 CentOS 8 上安装 PostgreSQL 数据库服务器。在选择安装哪个版本之前,请确保您的应用程序支持它。

我们还将探讨 PostgreSQL 数据库管理的基础知识。

先决条件#

为了能够安装软件包,您需要以 root 或用户身份登录须藤权限 .

在 CentOS 8 上安装 PostgreSQL#

在撰写本文时,标准 CentOS 存储库有两个版本的 PostgreSQL 服务器可供安装:版本 9.6 和 10.0。

要列出可用的 PostgreSQL 模块流,请键入:

dnf module list postgresql

输出显示 postgresql 模块可用于两个流。每个流都有两个配置文件:服务器和客户端。带有配置文件服务器的流 10 是默认流:

CentOS-8 - AppStream
Name          Stream    Profiles              Summary                                                 
postgresql    10 [d]    client, server [d]    PostgreSQL server and client module                     
postgresql    9.6       client, server [d]    PostgreSQL server and client module 
  1. 要安装默认流,PostgreSQL 服务器版本 10.0 类型:

    sudo dnf install @postgresql:10
  2. 要安装 PostgreSQL 服务器版本 9.6,请输入:

    sudo dnf install @postgresql:9.6 

您可能还想安装 contrib 包,它为 PostgreSQL 数据库系统提供了一些附加功能。

sudo dnf install postgresql-contrib

安装完成后,使用以下命令初始化 PostgreSQL 数据库:

sudo postgresql-setup initdb
Initializing database ... OK

启动 PostgreSQL 服务并使其在启动时启动:

sudo systemctl enable --now postgresql

Use the psql工具通过连接到 PostgreSQL 数据库服务器来验证安装并打印其version :

sudo -u postgres psql -c "SELECT version();"
PostgreSQL 10.6 on x86_64-redhat-linux-gnu, compiled by gcc (GCC) 8.2.1 20180905 (Red Hat 8.2.1-3), 64-bit

PostgreSQL 角色和身份验证方法#

PostgreSQL 使用角色的概念来处理数据库访问权限。角色可以代表一个数据库用户或一组数据库用户。

PostgreSQL 支持多种认证方式。最常用的方法是:

  • 信任 - 只要满足中定义的条件,角色就可以在没有密码的情况下进行连接pg_hba.conf都满足了。
  • 密码 - 角色可以通过提供密码进行连接。密码可以存储为scram-sha-256, md5, and password(明文)。
  • Ident - 仅在 TCP/IP 连接上受支持。它的工作原理是获取客户端的操作系统用户名以及可选的用户名映射。
  • 对等 - 与 Ident 相同,但仅在本地连接上受支持。

PostgreSQL 客户端身份验证在名为的配置文件中定义pg_hba.conf。默认情况下,对于本地连接,PostgreSQL 设置为使用对等身份验证方法。

The postgres用户是在安装 PostgreSQL 服务器时自动创建的。该用户是 PostgreSQL 实例的超级用户。相当于MySQL root用户。

以以下身份登录 PostgreSQL 服务器postgres用户,第一切换到用户然后使用以下命令访问 PostgreSQL 提示符psql公用事业:

sudo su - postgrespsql

从这里,您可以与 PostgreSQL 实例交互。要退出 PostgreSQL shell,请键入:

\q

您还可以使用以下命令访问 PostgreSQL 提示符而无需切换用户sudo命令:

sudo -u postgres psql

通常情况下postgres用户只能从本地主机使用。

创建 PostgreSQL 角色和数据库#

仅具有以下权限的超级用户和角色CREATEROLE特权可以创建新角色。

在以下示例中,我们将创建一个名为的新角色john,一个名为johndb,并授予数据库权限。

  1. 首先,连接到 PostgreSQL shell:

    sudo -u postgres psql
  2. 使用以下命令创建新的 PostgreSQL 角色:

    CREATE ROLE john;
  3. 创建一个新数据库:

    CREATE DATABASE johndb;
  4. 通过运行以下查询向用户授予数据库权限:

    GRANT ALL PRIVILEGES ON DATABASE johndb TO john;

启用对 PostgreSQL 服务器的远程访问#

默认情况下,PostgreSQL服务器仅监听本地接口127.0.0.1.

要启用对 PostgreSQL 服务器的远程访问,请打开配置文件:

sudo nano /var/lib/pgsql/data/postgresql.conf

向下滚动到CONNECTIONS AND AUTHENTICATION部分并添加/编辑以下行:

/var/lib/pgsql/data/postgresql.conf
#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------

# - Connection Settings -

listen_addresses = '*'     # what IP address(es) to listen on;

保存文件并重新启动 PostgreSQL 服务:

sudo systemctl restart postgresql

使用以下命令验证更改ss公用事业:

ss -nlt | grep 5432
LISTEN   0    128    0.0.0.0:5432    0.0.0.0:*       
LISTEN   0    128    [::]:5432      [::]:*  

上面的输出显示 PostgreSQL 服务器是倾听在所有接口的默认端口 (0.0.0.0) 上。

最后一步是通过编辑配置服务器以接受远程连接pg_hba.conf file.

以下是一些显示不同用例的示例:

/var/lib/pgsql/data/pg_hba.conf
# TYPE  DATABASE        USER            ADDRESS                 METHOD

# The user jane can access all databases from all locations using an md5 password
host    all             jane            0.0.0.0/0                md5

# The user jane can access only the janedb database from all locations using an md5 password
host    janedb          jane            0.0.0.0/0                md5

# The user jane can access all databases from a trusted location (192.168.1.134) without a password
host    all             jane            192.168.1.134            trust

结论#

CentOS 8 提供两个 PostgreSQL 版本:9.6 和 10.0。

有关此主题的更多信息,请访问PostgreSQL 文档

如果您遇到问题或有反馈,请在下面发表评论。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 CentOS 8 上安装 PostgreSQL 的相关文章

  • Rails 中的多列主键

    我正在尝试将桌面应用程序迁移到rails 还处理相当老式的现有数据库 问题是我在一列中没有唯一的 ID 但表的三列保证了记录的唯一性 鉴于我有三个表 authors author name author letter author nr1
  • 如何通过 SSL 从 Phoenix Web App 连接到 PostgreSQL?

    When trying to run Elixir Phoenix Web Application using PostgreSQL Database hosted 3rd party Database as a Service Azure
  • 防止 Django 在并发请求时多次将同一对象保存到数据库

    对于我们的博客平台 我们有一个 文章 模型 其中包含一个 更新的 日期时间字段 class Article models Model updated models DateTimeField null True blank True 当任何
  • 使用登录名(用户)创建 PostgreSQL 9 角色只是为了执行函数

    我多年来一直在寻找这个 并且尝试了网络上的所有方法但没有成功 我可以在 MSSQL 中做到这一点 但我没有找到在 PostgreSQL 中做到这一点的方法 我想要实现的只是创建一个具有登录名的角色 该角色无法创建 删除或更改数据库 函数 表
  • postgreSQL 将分区表(带插入触发器)从一台服务器转储和恢复到另一台服务器

    尝试将分区表从一台服务器转储到 PostgreSQL 9 4 5 中的另一台服务器 对 postgres 相当陌生 并继承了该项目 如果需要更多背景信息 请告诉我 dbname gt SELECT COUNT id FROM parent
  • 每个“容器”类一个 DAO 还是每个表一个 DAO?

    我有一个 容器 类 其中的字段包含在多个数据库表中 并且我使用 DAO 模式来访问数据 问题是 我应该为这个 容器 类创建一个 DAO 还是每个表都有一个 DAO 并合并它们的数据更好 您应该根据应用程序的需求而不是数据库的布局来设计 DA
  • 哪种 SQL 模式能够更快地避免插入重复行?

    我知道有两种不重复插入的方法 第一个是使用WHERE NOT EXISTS clause INSERT INTO table name col1 col2 col3 SELECT s s s WHERE NOT EXISTS SELECT
  • 如何使用 django 更新会计应用程序中的余额?

    我正在学习 Django 尝试制作一个会计应用程序来跟踪我的开支等 我使用两种模型创建数据库 一种用于帐户 一种用于操作 但我不知道如何在每次操作时更新我的 余额 我在想 也许每次我保存一个新操作时 我都会通过覆盖操作模型的保存方法来更新余
  • InnoDB 或 MyISAM - 为什么不两者都使用呢?

    我读过各种关于两者之间哪个更好的主题InnoDB and MyISAM 看来争论的都是使用还是其他 根据表的不同 是否不能同时使用两者 这样做会有什么缺点 据我所知 发动机可以在CREATE TABLE命令 因此 某些经常读取的表可以设置为
  • 销毁/删除 Rails 中的数据库

    是否可以从现有应用程序中完全删除数据库和所有迁移记录等 以便我可以从头开始重新设计数据库 通过发行rake T您有以下数据库任务 rake db create Create the database from DATABASE URL or
  • 设置约束可延迟在 PostgreSQL 事务上不起作用

    情况是这样的 我有两个表 其中一个引用另一个 例如 table2 引用 table1 创建这些表时 我确实将外键约束设置为 DEFERRABLE 将 ON UPDATE 和 ON DELETE 子句设置为 NO ACTION 这是默认值 但
  • 如何解析 Google Alerts 中的数据?

    首先 除了解析 Google 发送给您的电子邮件文本之外 您如何将 Google Alerts 信息存入数据库 似乎没有 Google Alerts API 如果您必须解析文本 您将如何解析电子邮件的相关部分 创建警报时 将 传送至 设置为
  • 获取 Postgres 数据库中每个表的行数

    获取数据库中所有表的行数的最有效方法是什么 我正在使用 Postgres 数据库 结果示例 table name row count some table 1 234 foobar 5 678 another table 32 如果您想要特
  • CentOS目录结构是树形的吗?

    CentOS 上有相当于树的东西吗 如果你的 Centos 系统上没有安装 tree 无论如何我通常建议服务器设置使用最小安装磁盘 你应该在命令行中输入以下内容 yum install tree y 如果没有安装 那是因为您没有正确的存储库
  • 如何在数据库中对 (Java) 枚举进行建模(使用 SQL92)

    您好 我正在使用名为 性别 的列对实体进行建模 在应用程序代码中 性别应该是一个 Java 枚举类型 有 2 个值 男性和女性 知道作为数据类型的枚举不是通用 SQL 语言 92 的一部分 您将如何建模它 数据模型必须是可移植的 以便由多个
  • Django Channels Postgres InterfaceError:连接已关闭

    我似乎无法理解这里的问题 我正在为我的渠道消费者编写测试文档中的描述 https channels readthedocs io en latest topics testing html 我通常会使用 Django 默认的单元测试 但由于
  • 如何使用 libpq 获取双精度值?

    The examples http www postgresql org docs 9 3 interactive libpq example htmllibpq 文档中展示了如何通过将整数值转换为主机字节序表示来获取整数值 我很好奇必须做
  • 如何在可能为空值的字段上创建唯一索引(Oracle 11g)?

    这是包含 3 列的示例表 ID UNIQUE VALUE UNIQUE GROUP ID 我希望可以允许以下记录 1 NULL NULL 2 NULL NULL or 3 NULL 7 4 123 7 or 注意 此条件不允许unique
  • 无法更改 MS Access 2007 上的数据类型

    我有一个巨大的数据库 800MB 其中包含一个名为 上次修改日期 的字段 目前该字段作为文本数据类型输入 但需要将其更改为日期 时间字段以执行一些查询 我有另一个完全相同的数据库 但其中只有 35MB 的数据 当我更改数据类型时 它工作正常
  • ORDER BY id 或 date_created 显示最新结果?

    我有一个表 实际上有几个 我想首先从中获取最新条目的结果 这是我的ORDER BY条款选项 date created INT 从不改变值 id 当然是INT AUTO INCRMENT 两列应同等地代表记录插入的顺序 我自然会使用date

随机推荐

  • 如何在 CentOS 8 上安装和配置 Gitlab

    Gitlab是源代码管理应用工具 它是 Github 的最佳替代品 它还为自托管版本的用户提供了一个选项 您只需安装Gitlab服务器即可充分利用其出色的功能 本教程将帮助您在 CentOS 8 Linux 系统上安装和配置 Gitlab
  • 如何在 Ubuntu 16.04 LTS 上安装 MySQL 5.7

    MySQL 是一个开源关系数据库管理系统 本教程将帮助您在 Ubuntu 和 Debian 系统上安装 MySQL 服务器 与之前的版本相比 该版本有多项安全改进 步骤 1 配置 Apt 存储库 下载 MySQL 团队官方提供的 MySQL
  • 如何在 Linux 上禁用 IPv6

    IPv6是下一代互联网协议 旨在取代当前的互联网协议 IP 版本 4 两个设备之间的通信需要 IP 地址 它是互联网上计算机的身份 本文将帮助您从 Linux 机器中禁用 IPv6 1 检查 IPv6 地址 Use 如果配置命令查看系统上当
  • 如何使用命令行备份 SAP HANA 数据库

    SAP HANA是一个内存数据平台 可部署为本地设备或云中 它是一个革命性的平台 最适合执行实时分析以及开发和部署实时应用程序 点击here了解有关 SAP HANA 的更多信息 使用以下步骤使用命令行备份 SAP HANA 数据库 仅建议
  • 如何从 Linux 系统中完全删除 MySQL

    MySQL 是一种流行的开源关系数据库管理系统 然而 有时由于各种原因 您可能需要从 Linux 系统中删除 MySQL 例如升级到新版本 替换为其他数据库系统或干脆卸载它 在本文中 我们将向您展示如何以安全有效的方式从 Linux 系统中
  • 如何在 Linux 中强制用户下次登录时更改密码

    所有的Linux系统都将用户信息保存在 etc passwd and etc shadow文件 用户密码和帐户期限详细信息存储在影子文件中 时效信息包含密码更改和帐户状态的详细信息 在本教程中 您将了解如何在 Linux 中强制用户更改密码
  • 如何在 Ubuntu 22.04 和 20.04 上安装和使用 Rkhunter

    Rkhunter 是 Rootkit Hunter 的缩写 是一种开源安全工具 可扫描 Linux 和 Unix 系统中的 rootkit 后门和其他可能的安全威胁 它是任何具有安全意识的用户工具包的重要补充 本文将提供有关如何在 Ubun
  • 如何在 Ubuntu 20.04 上安装 Anaconda

    Anaconda 是一个用于 R 编程和 Python 的开源平台 其中包含各种各样的包和存储库 它的功能很重要 因为它提供大规模的处理和计算数据 并且还可以用Python语言进行编程 Anaconda 是一个很好的 Python 应用程序
  • 如何在 Java 中使用三元运算符并举例

    与其他编程语言一样 Java 也提供了三元运算符 三元运算符是 if then else 语句的简单单行语句 三元运算符使用 and 简单 一个简单的三元运算符的工作原理类似于如果 那么 否则陈述 如果任何条件计算为 true 则执行 tr
  • 如何使您的功能分支保持最新。

    在 git 存储库中为新功能创建单独的分支是个好主意 在这种情况下 不要忘记使您的功能分支与主分支保持同步 因此 请定期更新您的功能分支 以避免任何合并冲突 本教程将帮助您从父分支更新功能分支 我们假设您的父分支是 master 执行以下命
  • 如何在 CentOS/RHEL 8 上安装 PHP 8

    PHP 8 0 是 PHP 团队于 2020 年 11 月 26 日发布的重大更新 较之前版本包含大量新功能和优化 要了解更多信息 请阅读PHP 8 变更日志 REMI 和 EPEL 是最流行的存储库 包含用于安装的最新 RPM 软件包 它
  • 什么是开放系统互连 (OSI) 模型?

    The 开放系统互连 OSI 模型是网络中的一个重要概念 您必须理解它才能掌握数据在网络中传输的方式 如果您是网络世界的新手 这份综合指南将为您提供 OSI 模型的扎实介绍 什么是 OSI 模型 OSI 模型是一个概念框架 用于标准化通信或
  • 如何将 Ubuntu 升级到 22.04 LTS (Jammy Jellyfish)

    Ubuntu 22 04 LTS Jammy Jellyfish 已于 2022 年 4 月 21 日发布 该版本将支持到 2027 年 升级谁 Ubuntu 桌面和开发用户可以立即升级到 Ubuntu 22 04 LTS 但Ubuntu服
  • 使用 Curl 传递自定义标头:实用指南

    Curl 是一个强大的命令行工具 世界各地的开发人员都使用它来通过 URL 传输数据 Curl 是一种多功能工具 支持各种协议 例如 HTTP HTTPS FTP 等 Curl 的宝贵功能之一是它能够在发出请求时传递自定义标头 本文旨在深入
  • Linux 中的 ls 命令(列出文件和目录)

    ls是任何 Linux 用户都应该知道的基本命令之一 The ls命令列出文件系统中的文件和目录 并显示有关它们的详细信息 它是安装在所有 Linux 发行版上的 GNU 核心实用程序包的一部分 本文将通过实际示例和最常见 ls 选项的详细
  • 如何在 CentOS 7 上安装 WildFly (JBoss)

    WildFly 以前称为 JBoss 是一个用 Java 编写的跨平台开源应用程序运行时 可帮助您构建令人惊叹的应用程序 WildFly 灵活 轻量 并且基于可根据需要添加或删除的可插拔子系统 本教程介绍如何在 CentOS 7 上安装 W
  • 如何在 CentOS 上启用 EPEL 存储库

    EPEL Extra Packages for Enterprise Linux 存储库提供了标准 Red Hat 和 CentOS 存储库中未包含的附加软件包 创建 EPEL 存储库是因为 Fedora 贡献者希望使用他们在 Red Ha
  • Linux 中的 who 命令

    在这篇文章中 我们解释了who捆绑在 GNU coreutils 包中的命令 who是一个命令行实用程序 用于打印当前登录用户的列表 它还可以显示当前的运行级别 上次系统启动的时间等 如何使用who命令 的基本语法为who命令如下 who
  • 如何在 Linux 中截断(空)文件

    在某些情况下 您可能希望将现有文件截断 清空 至零长度 简单来说 截断文件就是删除文件内容而不删除文件 截断文件比截断文件更快更容易删除文件 重新创造它 并设置正确的权限和所有权 此外 如果该文件由进程打开 则删除该文件可能会导致使用该文件
  • 如何在 CentOS 8 上安装 PostgreSQL

    PostgreSQL 或 Postgres 是一种开源通用对象关系数据库管理系统 具有许多高级功能 允许您构建容错环境或复杂的应用程序 在本指南中 我们将讨论如何在 CentOS 8 上安装 PostgreSQL 数据库服务器 在选择安装哪