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,请按照以下步骤操作:
-
安装 PostgreSQL
要安装 PostgreSQL 服务器以及 PostgreSQL contrib 包,该包为 PostgreSQL 数据库提供了一些附加功能,只需键入:
sudo yum install postgresql-server postgresql-contrib
-
初始化数据库
使用以下命令初始化 PostgreSQL 数据库:
sudo postgresql-setup initdb
Initializing database ... OK
-
启动 PostgreSQL
要启动 PostgreSQL 服务并使其在启动时启动,只需键入:
sudo systemctl start postgresql
sudo systemctl enable postgresql
-
验证 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 版本:
-
启用 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
-
安装 PostgreSQL
启用存储库后,使用以下命令安装 PostgreSQL 服务器和 PostgreSQL contrib 包:
sudo yum install postgresql10-server postgresql10-contrib
-
初始化数据库
要初始化 PostgreSQL 数据库类型:
sudo /usr/pgsql-10/bin/postgresql-10-setup initdb
Initializing database ... OK
-
启动 PostgreSQL
要启动 PostgreSQL 服务并使其在引导时启动,请键入:
sudo systemctl start postgresql-10
sudo systemctl enable postgresql-10
-
验证 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 - postgres
psql
从这里,您可以与 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
并授予数据库权限。
-
连接到 PostgreSQL Shell
sudo -u postgres psql
-
创建新的 PostgreSQL 角色
以下命令将创建一个名为“john”的新角色:
-
创建新的 PostgreSQL 数据库
使用以下命令创建一个名为“johndb”的新数据库createdb
命令:
-
授予权限
授予权限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 文档有关此主题的更多信息。
如果您有任何疑问,请在下面留言。