
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 initdbInitializing 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 5432LISTEN   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