如何在 Debian 9 上安装 PostgreSQL

2023-11-03

PostgreSQL,通常简称为 Postgres,是一个开源通用对象关系数据库管理系统。 PostgreSQL 拥有许多高级功能,例如在线备份、时间点恢复、嵌套事务、SQL 和 JSON 查询、多版本并发控制 (MVCC)、异步复制等。

在本教程中,我们将向您展示如何在 Debian 9 上安装 PostgreSQL 并探索基本数据库管理的基础知识。

先决条件#

在继续本教程之前,请确保您登录的用户已须藤权限 .

安装 PostgreSQL#

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

要在 Debian 服务器上安装 PostgreSQL,请完成以下步骤:

  1. 首先更新本地包索引:

    sudo apt update
  2. 安装 PostgreSQL 服务器和 PostgreSQL contrib 包,它为 PostgreSQL 数据库提供附加功能:

    sudo apt install postgresql postgresql-contrib
  3. 安装完成后,PostgreSQL服务将自动启动。为了验证安装,我们将使用以下命令连接到 PostgreSQL 数据库服务器psql实用程序并打印服务器版本 :

    sudo -u postgres psql -c "SELECT version();"

    输出将如下所示:

                                                     version                                                  
    -----------------------------------------------------------------------------------------------------------
    PostgreSQL 9.6.10 on x86_64-pc-linux-gnu, compiled by gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516, 64-bit
    (1 row)
Psql 是一个交互式终端程序,允许您与 PostgreSQL 服务器交互。

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

您可以使用sudo命令访问 PostgreSQL 提示符而不切换用户:

sudo -u postgres psql

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

创建 PostgreSQL 角色和数据库#

您可以使用以下命令从命令行创建新角色createuser命令。仅具有以下权限的超级用户和角色CREATEROLE特权可以创建新角色。

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

  1. 创建新的 PostgreSQL 角色

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

    sudo su - postgres -c "createuser john"
  2. 创建新的 PostgreSQL 数据库

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

    sudo su - postgres -c "createdb johndb"
  3. 授予权限

    授予权限john我们在上一步中创建的数据库上的用户连接到 PostgreSQL shell:

    sudo -u postgres psql

    并运行以下查询:

    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 /etc/postgresql/9.6/main/postgresql.conf
/etc/postgresql/9.6/main/postgresql.conf
#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------

# - Connection Settings -

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

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

sudo service postgresql restart

使用以下命令验证更改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.

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

/etc/postgresql/9.6/main/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

结论#

您已经学习了如何在 Debian 9 服务器上安装和配置 PostgreSQL。有关此主题的更多信息,请参阅PostgreSQL 文档 .

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

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

如何在 Debian 9 上安装 PostgreSQL 的相关文章

  • org.postgresql.util.PSQLException:协议错误。会话设置失败

    我知道这些类型的问题已经存在 但提供的解决方案对我不起作用 在我的应用程序中 没有版本不匹配的黑白驱动程序和 PostgreSQL 服务器 我还没有找到任何其他解决方案 我正在使用 PostgreSQL 服务器 9 4 和 postgres
  • SQL where 连接集必须包含所有值,但可以包含更多值

    我有三张桌子offers sports和连接表offers sports class Offer lt ActiveRecord Base has and belongs to many sports end class Sport lt
  • 如何在 postgreSQL 中从时间戳中减去/添加分钟

    我有以下场景 我有员工登记他们的上班 下班手续 但他们有10分钟的容忍度 我通过这种观点得到的最新条目 CREATE OR REPLACE VIEW employees late entries id created datetime en
  • 如何在 PostgreSQL 中克隆记录

    我想循环查询 但也保留下一个循环的实际记录 这样我就可以比较两个相邻的行 CREATE OR REPLACE FUNCTION public test RETURNS void AS body DECLARE previous RECORD
  • python 没有名为serial的模块

    我的 python 程序有问题 我编写了程序来将数据 温度 从 arduino 获取到我的树莓派 sqlite 数据库 但它在第 4 行 导入串行 处给了我一个错误 提示 ImportError 没有名为串行的模块 我使用 python3
  • IndexedDB - 对象存储与多个数据库与索引?

    我想知道什么时候使用单个数据库与具有多个对象存储的数据库是一个好主意 我阅读了网络上的大多数教程并查看了 indexedDB 的规范 但找不到比较这些不同概念的好例子 有没有人有此类事情的具体示例 使用多个对象存储和 或代码的设计模型 只要
  • 为 Qt 应用程序创建 Linux 安装

    我刚刚用 Qt Creator 制作了一个很棒的程序 我对自己很满意 如何将其从台式机移至笔记本电脑 那么 最好的方法是安装程序 对吗 对于 Ubuntu 这是一个 Debian 软件包 对吗 我怎么做 有人这样做过吗 他们可以分享 QT
  • 删除 mysql 数据库中超过 3 个月的行的作业

    我们使用 mysql 服务器作为集中式日志系统 我希望有一项工作来定期删除 清理超过 3 个月的表条目 做这个的最好方式是什么 提前致谢 hinling 您是否在字段中存储项目的创建日期 If so DELETE FROM myTable
  • 使用python shelve跨平台

    我希望得到关于 Python 中的书架 数据库的一些建议 问题 我在 Mac 上创建了一个数据库 我想在 Windows 7 上使用该数据库 我使用 Python 3 2 MacOS 10 7 和 win 7 当我在 Mac 上打开并保存我
  • JSON 值的模式匹配

    运行 Postgres 12 5 的本地 docker 实例 4MBwork mem 我正在实施这个图案 https dba stackexchange com q 108447 3684搜索 json 中的任意字段 目标是搜索并返回 JS
  • 如何以编程方式使用包含多列的 where-in 子句执行 PostgreSQL 查询?

    我的查询是这样的 select from plat customs complex where code t code s in 01013090 10 01029010 90 它在 psql 控制台中运行良好 我的问题是如何在客户端代码中
  • 无法使用 datastax java 驱动程序通过 UDT 密钥从 cassandra 检索

    我正在尝试使用用户定义的类型作为分区键将对象存储在 cassandra 中 我正在使用 datastax java 驱动程序进行对象映射 虽然我能够插入到数据库中 但无法检索该对象 如果我更改分区键以使用非 udt 例如文本 我就能够保存和
  • Laravel 5.3 Eloquent 事务和外键限制

    我正在从事一个更大的项目 我们在一个 Postgres 数据库中有多个模式 我们在模式之间创建了外键 这是一个例子 gt 我们有公司模式和用户模式 公司模式有company users表 该表对user users表有外键限制 CREATE
  • PostgreSQL 如何创建数据库或模式的副本?

    有没有一种简单的方法可以在 PostgreSQL 8 1 中创建数据库或模式的副本 我正在测试一些软件 它对数据库中的特定模式进行大量更新 我想复制它 以便我可以与原始版本进行一些比较 如果它位于同一服务器上 则只需使用带有 TEMPLAT
  • 每个搜索词显示一行,如果未找到则替换默认值

    Query SELECT product id name FROM product WHERE barcode in 681027 8901030349379 679046 679047 679082 679228 679230 67923
  • 用数字 1-1000 填充 Postgres 数据库?

    我是 pgAdmin3 的新手 我想用数字 1 1000 填充 pgAdmin3 中的数据库 我该怎么做呢 目前 我创建了一个名为 MyDatabase 的数据库 其中没有任何内容 每行应与其数值相对应 第 1 行应包含 1 第 2 行应包
  • 我可以以编程方式配置 PostgreSQL 以不消除全文搜索中的停用词吗?

    我正在使用 PostgreSQL 全文搜索来进行项目 其中传统停用词 a the if 等 应该被索引和可搜索 这不是默认行为 例如 我可能希望我的用户找到查询 to be or not to be 的结果 The 文档 http www
  • postgresql中数组的区别

    我有两个数组 1 2 3 4 7 6 and 2 3 7 在 PostgreSQL 中可能有共同的元素 我想做的是从第一个数组中排除第二个数组中存在的所有元素 到目前为止我已经取得了以下成果 SELECT array SELECT unne
  • 使用数据库进行日志记录

    大多数日志似乎都是纯文本形式 而不是放入 MySQL 其他类型的数据库中 这是否有原因 在我看来 将它们放入数据库将使分析变得非常非常容易 但这会以牺牲速度还是其他什么为代价 我不太关心可移植性 显然你会有数据库连接的文本日志 我能想到两大
  • Postgres 中 -Infinity 和 Infinity 的适当值

    在一种情况下 我们必须在 Postgres DB 中存储 无穷大和 无穷大的值 应该考虑什么合适的值 如果没有 请建议最合适的替代方案 你实际上可以使用 infinity and infinity for FLOAT4 and FLOAT8

随机推荐

  • 什么是MySQL?

    MySQL 是一个存储网站数据的数据库系统 它是一种 RDBMS 关系数据库管理系统 这意味着它将数据组织到表中 您可以使用 SQL 命令访问和更新数据 许多流行网站都使用 MySQL 包括 Facebook Twitter 和 YouTu
  • 如何在 Bash 中创建和使用数组

    Bash 是一种流行的命令行界面 常用于 Linux 和基于 Unix 的系统 Bash 的强大功能之一是能够使用数组 Bash 数组提供了一种在单个变量中存储多个值的方法 从而可以轻松访问和操作这些值 在本教程中 我们将探索如何在 Bas
  • 解决“laravel.log 无法打开”的问题:分步解决方案

    Laravel 是一个富有表现力且优雅的 PHP 框架 由于其语法和强大的功能而被广泛应用于 Web 应用程序开发 然而 与所有技术一样 它也并非没有挑战 许多开发人员遇到的一个常见错误是 laravel log 无法打开 错误 本文提供了
  • 如何在 Ubuntu 22.04 中创建 SFTP 用户(无 Shell 访问)

    SFTP 是一种允许通过网络安全传输文件的协议 它经常被企业和个人用来传输敏感数据 SFTP 与 FTP 类似 但使用不同的协议进行通信 SFTP 比 FTP 更安全 通常与 SSH Secure Shell 结合使用以提供更高级别的安全性
  • 如何在 Debian 8 上安装和配置 Squid Proxy

    Squid 是类 Unix 操作系统上流行的代理服务器 它还用于网页过滤 它广泛用于通过缓存重复数据来提高 Web 服务器速度 本教程帮助您在 Debian 8 Jessie 系统上安装 Squid 代理服务器 还提供代理服务器的基本配置详
  • 从 Linux 文件中删除具有匹配模式的行

    操作文件是掌握 Linux 的基本部分 了解如何删除与特定模式匹配的行尤其有用 这可以使用多种命令行工具来实现 例如 grep sed 和 awk 在本文中 我们将探讨如何使用这些工具从 Linux 文件中查找和删除与特定模式匹配的行 开始
  • ffmpeg:加载共享库时出错:libavdevice.so.55:无法打开共享对象文件:没有这样的文件或目录

    Error 在 CentOS 6 5 服务器上安装 ffmpeg 后 我遇到以下错误 ffmpeg error while loading shared libraries libavdevice so 55 cannot open sha
  • 如何在 Debian 8 上安装 PHP(7.2、7.1 和 5.6)

    PHP 7 2 是可供安装的最新稳定版本 本教程将帮助您在系统上安装多个 PHP 版本 现在按照本教程在 Debian 8 Jessie 上安装 PHP 先决条件 使用 shell 访问登录到您的 Debian 8 系统 对于远程系统 使用
  • 如何在 Windows 批处理脚本中添加睡眠/等待

    您可以使用timeout命令等待命令提示符或批处理脚本指定的时间 时间定义为Seconds 例如等待5秒使用 使用 T选项 c gt timeout T 5 您还可以直接指定秒 例如 c gt timeout 5 上述命令将在按任意键时中断
  • 如何在 CentOS 7 上安装 Apache Maven

    Apache Maven 是一个免费的开源项目管理和理解工具 主要用于 Java 项目 Maven 使用项目对象模型 POM 它本质上是一个 XML 文件 其中包含有关项目 配置详细信息 项目依赖项等的信息 在本教程中 我们将向您展示在 C
  • 如何在 CentOS 8 上安装和配置 ownCloud

    ownCloud是一个用于管理和共享文件的开源 自托管云平台 它可以用作 Dropbox Microsoft OneDrive 和 Google Drive 的替代品 ownCloud 可通过应用程序进行扩展 并拥有适用于所有主要平台的桌面
  • 如何在 Ubuntu 18.04 上安装 VMware Workstation Player

    VMware是一个成熟稳定的虚拟化解决方案 允许您在一台机器上运行多个独立的操作系统 借助 VMware Workstation Player 您可以创建并运行自己的虚拟机 并评估由许多软件供应商提供的作为虚拟设备分发的软件VMware 解
  • 如何在 CentOS 7 上安装 Pip

    Pip 是一个包管理系统 可简化用 Python 编写的软件包 例如 Python 包索引 PyPI 中的软件包 的安装和管理 CentOS 7 上默认不安装 Pip 但安装非常简单 在本教程中 我们将逐步完成安装 Python 所需的步骤
  • 如何设置自动 Odoo 备份

    在本教程中 我们将引导您完成创建 Odoo 数据库的自动每日备份的过程 Odoo 是最流行的开源 ERP 系统 用 Python 编写 并使用 PostgreSQL 作为数据库后端 Odoo 将其数据存储在 PostgreSQL 数据库中
  • 如何在 Ubuntu 18.04 上安装和配置 Nagios

    Nagios 是最流行的开源监控系统之一 Nagios 保留整个 IT 基础设施的清单 并确保您的网络 服务器 应用程序 服务和流程正常运行 如果发生故障或性能不佳 Nagios 将通过各种方法发送通知警报 本教程将指导您完成在 Ubunt
  • 如何在 Debian 9 上设置 OpenVPN 服务器

    无论您是想在连接不可信的公共 Wi Fi 网络时安全可靠地访问互联网 绕过地理限制内容还是允许您的同事在远程工作时安全地连接到您的公司网络 使用 VPN 都是最佳解决方案 VPN 允许您连接到远程 VPN 服务器 使您的连接加密且安全 并通
  • 如何使用 Linux 命令行删除文件和目录

    本教程将向您展示如何使用rm unlink and rmdirLinux 中删除文件和目录的命令 如何删除文件 要从命令行删除 或删除 Linux 中的文件 请使用rm 删除 或unlink命令 The unlink命令允许您仅删除单个文件
  • Linux 中的 id 命令

    id是一个命令行实用程序 可以打印真实有效的用户和组 ID 使用id命令 语法为id命令如下 id OPTIONS USERNAME 如果省略用户名 则id命令显示有关当前登录用户的信息 当没有任何选项调用时 id打印真实用户 ID uid
  • 如何在 Debian 9 上安装 Elasticsearch

    Elasticsearch 是一个开源分布式全文搜索和分析引擎 它支持 RESTful 操作 允许您实时存储 搜索和分析大量数据 Elasticsearch 是最流行的搜索引擎之一 为具有复杂搜索要求的应用程序 例如大型电子商务商店和分析应
  • 如何在 Debian 9 上安装 PostgreSQL

    PostgreSQL 通常简称为 Postgres 是一个开源通用对象关系数据库管理系统 PostgreSQL 拥有许多高级功能 例如在线备份 时间点恢复 嵌套事务 SQL 和 JSON 查询 多版本并发控制 MVCC 异步复制等 在本教程