如何在 CentOS 7 上安装 PostgreSQL

2023-11-09

PostgreSQL 或 Postgres 是一种开源通用对象关系数据库管理系统,具有许多高级功能,可让您创建复杂的 Web 应用程序。

在本教程中,我们将向您展示如何在 CentOS 7 计算机上安装 PostgreSQL 的两种不同方法。第一种方法将引导您完成从 CentOS 存储库安装 PostgreSQL v9.2.23 所需的步骤,而第二种方法将向您展示如何从官方 PostgreSQL 存储库安装最新版本的 PostgreSQL。

如果您的应用程序不需要最新版本,我们建议使用第一种方法并从 CentOS 存储库安装 PostgreSQL。

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

先决条件#

在继续本教程之前,请确保您以以下身份登录具有 sudo 权限的用户 .

从 CentOS 存储库安装 PostgreSQL#

在撰写本文时,CentOS 存储库提供的最新 PostgreSQL 版本是 PostgreSQL 版本 9.2.23。

要在 CentOS 服务器上安装 PostgreSQL,请按照以下步骤操作:

  1. 安装 PostgreSQL

    要安装 PostgreSQL 服务器以及 PostgreSQL contrib 包,该包为 PostgreSQL 数据库提供了一些附加功能,只需键入:

    sudo yum install postgresql-server postgresql-contrib
  2. 初始化数据库

    使用以下命令初始化 PostgreSQL 数据库:

    sudo postgresql-setup initdb
    Initializing database ... OK
  3. 启动 PostgreSQL

    要启动 PostgreSQL 服务并使其在启动时启动,只需键入:

    sudo systemctl start postgresqlsudo systemctl enable postgresql
  4. 验证 PostgreSQL 安装

    为了验证安装,我们将尝试使用以下命令连接到 PostgreSQL 数据库服务器psql工具并打印服务器版本 :

    sudo -u postgres psql -c "SELECT version();"
    PostgreSQL 9.2.23 on x86_64-redhat-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16), 64-bit
    (1 row)
Psql 是一个交互式命令行实用程序,允许我们与 PostgreSQL 服务器交互。

从 PostgreSQL 存储库安装 PostgreSQL#

在撰写本文时,官方 PostgreSQL 存储库提供的最新 PostgreSQL 版本是 PostgreSQL 版本 10.4。在继续下一步之前,您应该访问PostgreSQL Yum 存储库页面并检查是否有可用的新版本。

请按照以下步骤在 CentOS 服务器上安装最新的 PostgreSQL 版本:

  1. 启用 PostgreSQL 存储库

    要启用 PostgreSQL 存储库,只需安装存储库rpm file:

    sudo yum install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm
  2. 安装 PostgreSQL

    启用存储库后,使用以下命令安装 PostgreSQL 服务器和 PostgreSQL contrib 包:

    sudo yum install postgresql10-server postgresql10-contrib
  3. 初始化数据库

    要初始化 PostgreSQL 数据库类型:

    sudo /usr/pgsql-10/bin/postgresql-10-setup initdb
    Initializing database ... OK
  4. 启动 PostgreSQL

    要启动 PostgreSQL 服务并使其在引导时启动,请键入:

    sudo systemctl start postgresql-10sudo systemctl enable postgresql-10
  5. 验证 PostgreSQL 安装

    为了验证安装,我们将尝试使用以下命令连接到 PostgreSQL 数据库服务器psql工具并打印服务器版本:

    sudo -u postgres /usr/pgsql-10/bin/psql -c "SELECT version();"
    PostgreSQL 10.4 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28), 64-bit
    (1 row)

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用户。

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

sudo su - postgrespsql

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

\q

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

sudo -u postgres psql

The postgres用户通常仅从本地主机使用,建议不要为此用户设置密码。

如果您从官方 PostgreSQL 存储库安装了 PostgreSQL 版本 10,则需要使用 PostgreSQL 版本的完整路径psql二进制是/usr/pgsql-10/bin/psql.

创建 PostgreSQL 角色和数据库#

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

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

  1. 连接到 PostgreSQL Shell

    sudo -u postgres psql
  2. 创建新的 PostgreSQL 角色

    以下命令将创建一个名为“john”的新角色:

    CREATE ROLE john;
  3. 创建新的 PostgreSQL 数据库

    使用以下命令创建一个名为“johndb”的新数据库createdb命令:

    CREATE DATABASE johndb;
  4. 授予权限

    授予权限john用户在我们在上一步中创建的数据库上运行以下查询:

    GRANT ALL PRIVILEGES ON DATABASE johndb TO john;

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

默认情况下,PostgreSQL服务器仅监听本地接口127.0.0.1。要启用对 PostgreSQL 服务器的远程访问,请打开配置文件postgresql.conf并添加listen_addresses = '*' in the CONNECTIONS AND AUTHENTICATION部分。

sudo vim /var/lib/pgsql/data/postgresql.conf
如果您运行的是 PostgreSQL 版本 10,则该文件的路径为/var/lib/pgsql/10/data/postgresql.conf.
/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
如果您运行的是 PostgreSQL 版本 10,请使用以下命令重新启动 PostgreSQL 服务systemctl restart postgresql-10.

使用以下命令验证更改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 will be able to access all databases from all locations using a md5 password
host    all             jane            0.0.0.0/0                md5

# The user jane will be able to access only the janedb from all locations using a md5 password
host    janedb          jane            0.0.0.0/0                md5

# The user jane will be able to access all databases from a trusted location (192.168.1.134) without a password
host    all             jane            192.168.1.134            trust
如果您运行的是 PostgreSQL 版本 10,则该文件的完整路径为/var/lib/pgsql/10/data/pg_hba.conf.

结论#

您已经学习了如何在 CentOS 7 服务器上安装和配置 PostgreSQL。

咨询PostgreSQL 文档有关此主题的更多信息。

如果您有任何疑问,请在下面留言。

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

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

  • 使用 LIKE 和撇号的 Mysql 查询问题

    所以我有一个有趣的问题 我从未遇到过 并且似乎找不到太多有关纠正该问题的信息 我有一个庞大的数据库 里面有大量的数据 相当于 10 年的数据 并试图对其进行搜索 现在搜索功能运行良好 但最近有人让我注意到一个 错误 如果你愿意的话 我尝试对
  • 如何在数据库中对 (Java) 枚举进行建模(使用 SQL92)

    您好 我正在使用名为 性别 的列对实体进行建模 在应用程序代码中 性别应该是一个 Java 枚举类型 有 2 个值 男性和女性 知道作为数据类型的枚举不是通用 SQL 语言 92 的一部分 您将如何建模它 数据模型必须是可移植的 以便由多个
  • 尝试使用 Rails 和 PostgreSQL 生成模型时,命令挂起且没有错误

    使用该命令时 rails generate model Event name string 什么也没发生 我必须按 CTRL c 我使用的版本是 红宝石 2 1 1p76 导轨4 1 0 PostgreSQL 9 3 4 Mac OS X
  • 如何在可能为空值的字段上创建唯一索引(Oracle 11g)?

    这是包含 3 列的示例表 ID UNIQUE VALUE UNIQUE GROUP ID 我希望可以允许以下记录 1 NULL NULL 2 NULL NULL or 3 NULL 7 4 123 7 or 注意 此条件不允许unique
  • Postgres 运行缓慢的删除查询

    我们有一个表 其行数刚刚超过 62k 我们正在对其运行一个非常简单的删除查询 需要 45 分钟才能完成 DELETE FROM myTable WHERE createdtime lt 2017 03 07 05 00 00 000 我们尝
  • 如何列出表中的所有列?

    对于各种流行的数据库系统 如何列出表中的所有列 对于 MySQL 请使用 DESCRIBE name of table 只要您使用 SQL Plus 或 Oracle 的 SQL Developer 这也适用于 Oracle
  • 如何从主机连接到 Docker Postgres 容器

    我按照以下说明搭建了一个 Rails 开发环境https docs docker com compose rails https docs docker com compose rails 它可以工作 但我无法从主机连接到 Postgres
  • 删除 mysql 数据库中超过 3 个月的行的作业

    我们使用 mysql 服务器作为集中式日志系统 我希望有一项工作来定期删除 清理超过 3 个月的表条目 做这个的最好方式是什么 提前致谢 hinling 您是否在字段中存储项目的创建日期 If so DELETE FROM myTable
  • 如何覆盖 Ruby Ranges 的 .. 和 ... 运算符以接受 Float::INFINITY?

    我想覆盖 and Ruby 中的运算符Range 原因是 我正在处理数据库中的无限日期范围 如果你拉一个infinty从 Postgres 中取出日期时间 你会得到一个Float INFINITY在红宝石中 问题是 我无法使用Float I
  • 多个连接到同一个表

    我有这组表格和数据 CREATE TABLE item id INT PRIMARY KEY name VARCHAR CREATE TABLE property id INT PRIMARY KEY name VARCHAR CREATE
  • Postgres where 子句比较时间戳

    我有一个表 其中列的数据类型timestamp 其中包含一天的多条记录 我想选择与日期对应的所有行 我该怎么做 Assuming you actually mean timestamp because there is no datetim
  • 显示包含特定表的所有数据库名称

    我的 SQL Server 中有很多数据库 我必须只搜索包含特定表名的数据库名称Heartbitmaster 我有很多数据库 例如Gotgold DVD等 我只想从包含此表的查询中查找数据库名称Heartbitmaster 我搜索我尝试查询
  • Laravel 5.3 Eloquent 事务和外键限制

    我正在从事一个更大的项目 我们在一个 Postgres 数据库中有多个模式 我们在模式之间创建了外键 这是一个例子 gt 我们有公司模式和用户模式 公司模式有company users表 该表对user users表有外键限制 CREATE
  • 使用 JDBC 连接到 PostgreSql 的本地实例

    我在 Linux 机器上有一个正在运行的 PostgreSql 本地实例 当我使用psql来自 shell 的命令我成功登录 没有任何问题 我需要通过 JDBC 连接到 PostgreSql 但我不知道我到底应该传递什么url参数为Driv
  • Android 认为我没有关闭数据库!为什么?

    我有一个 SQLiteDatabase 数据成员 我在 onCreate 中初始化它 并在 onPause onStop 和 onDestroy 中调用 close 它在 onResume 中重新初始化 它似乎运行得很好 但当我查看调试器时
  • proc_open() 失败并显示“权限被拒绝”

    我正在尝试使用proc open 执行程序并打印结果 但是 我不断收到 许可被拒绝 的消息 已将脚本和可执行文件的 chmod 设置为 0777 但无济于事 ini get safe mode 是假的 可能出什么问题了 我正在使用 Cent
  • 返回年份数组作为年份范围

    我正在尝试查询一个包含以下内容的表character varying 年份列 并将这些年份作为逗号分隔的年份范围字符串返回 年份范围将由数组中存在的连续年份确定 不连续的年份 年份范围应以逗号分隔 数据类型的原因是character var
  • 随机数据库与 AWS 中的 Django 和 Postgresql 断开连接

    我试图找出 Django 和数据库连接错误问题的根源 此时 我正在调试提示 因为我认为症状太不具体 一些背景 我一直在使用这个堆栈 在 AWS 中部署了很多年 没有出现任何问题 Ubuntu 在本例中为 20 04 LTS Nginx Uw
  • 具有多个主键的 SQLAlchemy 不会自动设置任何

    我有一个简单的表 class test Base tablename test id Column Integer primary key True title Column String def init self title self
  • 每个数据库多个/单个 *.edmx 文件

    我有一个通过 ADO net 数据服务与数据库交互的项目 数据库很大 近 150 个具有依赖关系的表 该项目几年前开始 当时使用的是数据集 现在我们正在转向实体模型关系 由于我们添加了更多需要使用的表 该模型正在不断增长 这是管理这一切的正

随机推荐

  • 如何在 Ubuntu 16.04、14.04 和 LinuxMint 18 中安装 Filezilla

    文件齐拉是最流行的跨平台 开源 ftp 客户端 FileZilla 可用作 FTP FTPS 和 SFTP 客户端 具有许多功能和直观的图形用户界面 以下是 FileZilla 的一些主要功能 访问以下网址在 Linux 系统上安装和配置
  • 在 Ubuntu 中设置启动和关闭脚本

    Linux 操作系统的强大功能之一是能够通过在启动 关闭或重新启动时运行脚本来控制系统的行为 本文作为在 Ubuntu Linux 中设置这些脚本的实用指南 从自动化日常任务到初始化服务 潜在的用例几乎是无限的 让我们深入探讨如何利用此功能
  • 用于备份 SQL Server 数据库的 PowerShell 脚本

    数据库管理是任何依赖数据存储和检索的应用程序的一个关键方面 确保数据完整性和可用性至关重要 此过程中最基本的步骤之一是创建 SQL Server 数据库的定期备份 在本文中 我们将演示如何创建一个 PowerShell 脚本 该脚本可自动执
  • 如何在 MacOS 上安装 Node.js

    Node js 是一个强大的 JavaScript 运行时环境 允许您在服务器端执行 JavaScript 它广泛用于开发可扩展的 Web 应用程序 命令行工具等 在本文中 我们将介绍在 macOS 系统上安装 Node js 的过程 先决
  • 如何在 Ubuntu 和 Debian 上导入 GPG 密钥(无需 apt-key)

    最新的基于 Debian 的系统已弃用 apt key 命令 此命令用于将 GPG 签名密钥导入系统 这个命令在 Debian 10 及其衍生版本之前一直运行良好 Debian 11 及其衍生版本 如 Ubuntu 22 04 发布后 用户
  • 如何为 Node.js 应用程序设置 Apache 反向代理

    如果您的 Node js 应用程序在可访问 Internet 的服务器上运行 您将需要设置反向代理 以便外部用户可以通过 URL 例如 https example com 访问您的应用程序 即使您的 Node js 应用程序运行在专用网络上
  • 了解 Linux 进程状态的基本指南

    Linux 是世界上最流行的操作系统之一 以其效率和可靠性而备受赞誉 它是许多服务器 超级计算机和嵌入式系统的核心 Linux 的强大功能很大一部分源于它对系统进程的管理 本文提供了了解 Linux 进程状态的基本指南 并举例说明以便更好地
  • 如何在生产服务器上安全地重新启动 Apache

    要在生产服务器上安全地重新启动 Apache 建议使用 apachectl 或 httpd 工具 取决于您的系统 它提供了优雅的重新启动命令 这可确保所有当前操作在服务重新启动之前完成 验证配置文件 重新启动之前 请确保您的 Apache
  • 如何在 Ubuntu 20.04 上安装和配置 Fail2ban

    Fail2ban 是一种用于提高服务器安全性免受网络攻击的工具 它允许您根据定义的设置临时或永久阻止远程 IP 地址 它可以帮助您保护服务器和数据免受攻击者的侵害 本教程帮助您在 Ubuntu 20 04 LTS Linux 系统上安装 F
  • 什么是 SHA-512 算法?

    安全哈希算法 SHA 是将数据转换为固定长度哈希值的加密函数 可以将其视为数据的数字 指纹 SHA 512 算法是 SHA 2 安全哈希算法 2 家族的一部分 该算法由美国国家安全局 NSA 设计 并由美国国家标准与技术研究所 NIST 于
  • df 命令 – 检查 Linux 中的磁盘空间

    你使用Linux吗 如果是这样 那么您就知道它是一个功能强大的操作系统 具有大量工具和选项来帮助您管理系统 Linux 提供的最有用的工具之一是 df 命令 它允许您检查磁盘空间 在这篇博客中 我们将了解如何使用 df 命令来检查 Linu
  • Git 技巧:安全删除本地和远程分支

    使用 Git 是现代软件开发的重要组成部分 随着项目的发展 我们经常发现自己有多个分支代表不同的开发阶段 然而 维护太多分支可能会导致混乱和混乱 在本文中 我们将探讨安全有效地删除 Git 远程和本地分支的步骤 确保干净且有组织的工作流程
  • Linux Nohup 命令

    The nohup命令执行指定为其参数的另一个程序并忽略所有SIGHUP 挂断 信号 SIGHUP是当进程的控制终端关闭时发送到进程的信号 通常 当您通过 SSH 运行程序时 如果连接断开或注销 会话将终止 并且从终端执行的所有进程都将停止
  • 如何在 CentOS 7 上安装和使用 FFmpeg

    FFmpeg 是一个用于处理多媒体文件的免费开源工具集合 它包含一组共享的音频和视频库 例如libavcodec libavformat和libavutil 使用 FFmpeg 您可以在各种视频和音频格式之间进行转换 设置采样率 捕获流音频
  • 如何在 Debian 10 上安装 Python 3.8

    Python 是世界上使用最广泛的编程语言之一 凭借其简单易学的语法 Python 成为初学者和经验丰富的开发人员的热门选择 Python 是一种非常通用的编程语言 它可用于构建各种应用程序 从简单的脚本到复杂的机器学习算法 Debian
  • 如何在 Debian 9 上安装 Visual Studio Code

    视觉工作室代码是微软开发的免费开源跨平台代码编辑器 它有一个内置的调试支持 嵌入式Git控制 语法突出显示 代码完成 集成终端 代码重构和片段 可以使用扩展来扩展 Visual Studio Code 功能 本教程介绍如何使用 VS Cod
  • 使用 PostfixAdmin 设置邮件服务器

    Postfix Admin 是一个基于 Web 的界面 允许用户配置和管理基于 Postfix 的电子邮件服务器 使用 Postfix Admin 您可以创建和管理多个虚拟域 用户和别名 这是该系列的第一篇文章设置和配置邮件服务器其中涵盖了
  • 如何在 CentOS 8 上安装 PHP

    PHP 是最常用的服务器端编程语言之一 许多流行的 CMS 和框架 例如 WordPress Magento 和 Laravel 都是用 PHP 构建的 在本指南中 我们将讨论如何在 CentOS 8 上安装 PHP 7 2 7 3 或 7
  • 在 Debian 10 上使用 Let's Encrypt 保护 Apache

    Let s Encrypt 是由互联网安全研究小组 ISRG 创建的证书颁发机构 它通过完全自动化的流程提供免费的 SSL 证书 旨在消除手动证书创建 验证 安装和续订 Let s Encrypt 颁发的证书自颁发之日起 90 天内有效 并
  • 如何在 CentOS 7 上安装 PostgreSQL

    PostgreSQL 或 Postgres 是一种开源通用对象关系数据库管理系统 具有许多高级功能 可让您创建复杂的 Web 应用程序 在本教程中 我们将向您展示如何在 CentOS 7 计算机上安装 PostgreSQL 的两种不同方法