PostgreSQL或Postgres是一个开源的通用对象关系数据库管理系统,具有许多先进的功能,允许你建立容错的环境或复杂的应用程序。
在本指南中,我们将讨论如何在CentOS 8上安装PostgreSQL数据库服务器。在选择安装哪个版本之前,要确保你的应用程序支持它。
我们还将探讨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
要安装默认的流,PostgreSQL服务器10.0版的类型:
$ sudo dnf install @postgresql:10
要安装9.6版的PostgreSQL服务器,键入:
$ 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
使用psql工具通过连接到PostgreSQL数据库服务器来验证安装,并打印其版本。
$ 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客户端认证在名为pg_hba.conf的配置文件中定义。默认情况下,对于本地连接,PostgreSQL被设置为使用对等认证方法。
当你安装PostgreSQL服务器时,会自动创建postgres用户。这个用户是PostgreSQL实例的超级用户。它等同于MySQL的根用户。
要以postgres用户登录到PostgreSQL服务器,首先切换到该用户,然后使用psql工具访问PostgreSQL提示符:
$ sudo su - postgres
$ psql
从这里,你可以与PostgreSQL实例进行交互。要退出PostgreSQL的外壳,请键入。
\q
你也可以在不切换用户的情况下用sudo命令访问PostgreSQL提示符。
$ sudo -u postgres psql
通常情况下,postgres用户只在本地主机上使用。
$ sudo -u postgres psql
使用下面的命令创建一个新的PostgreSQL角色。
CREATE ROLE john;
创建一个新的数据库。
CREATE DATABASE johndb;
通过运行下面的查询,授予用户在数据库上的权限。
GRANT ALL PRIVILEGES ON DATABASE johndb TO john;
$ sudo nano /var/lib/pgsql/data/postgresql.conf
向下滚动到 CONNECTIONS AND AUTHENTICATION 部分,添加/编辑以下一行。
#------------------------------------------------------------------------------
# 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文件来配置服务器,使其接受远程连接。
下面是一些显示不同使用情况的例子。
# 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