PostgreSQL 或者 Postgres 是一个开源的,多用途的关系型数据库管理系统。它有很多高级特性,可以允许你构建容错的环境或者复杂的应用。
在这篇指南中,我们将会讨论如何在 CentOS 8 上安装 PostgreSQL 数据库服务器。在选择你要安装哪个版本之前,请确认你的应用支持它。
我们将会探索 PostgreSQL 数据库管理的基础知识。
为了安装软件包,你需要以 root 或者其他有 sudo 权限的用户身份登录系统。
在写这篇文章的时候,有两个 PostgreSQL 服务器的版本可用来安装:9.6 和 10.0 。
为了列出可用的 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
01.为了安装默认的版本,PostgreSQL 服务器版本 10.0,输入:
sudo dnf install @postgresql:10
02.为了安装 PostgreSQL 服务器版本 9.6,输入:
sudo dnf install @postgresql:9.6
你可能还想安装 contrib 包,它们给 PostgreSQL 数据库提供一些额外的特性:
sudo dnf install postgresql-contrib
一旦安装完成,使用下面的命令初始化 PostgreSQL 数据库:
sudo postgresql-setup initdb
Initializing database ... OK
启动 PostgreSQL 服务,并且启用开机启动 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 客户端身份验证通常被定义在pg_hba.conf
文件中。默认情况下,对于本地连接,PostgreSQL 被设置成身份认证防范 peer。
为了以postgres
用户身份登录 PostgreSQL 服务器,首先切换用户,然后使用psql
工具访问 PostgreSQL。
sudo su - postgres
psql
从这里开始,你可以与 PostgreSQL 实例交互。退出 PostgreSQL Shell,输入:
\q
你也可以不切换用户,而使用sudo
命令访问 PostgreSQL:
sudo -u postgres psql
通常,postgres
用户仅仅在本地被使用。
仅仅超级用户和拥有CREATEROLE
权限的角色可以创建新角色。
在下面的例子中,我们创建一个名称为john
的角色,一个名称为johndb
的数据库,并且授予数据库上的权限
01.首先,连接到 PostgreSQL shell:
sudo -u postgres psql
02.通过下面的命令,创建一个新的 PostgreSQL 角色:
create role john;
03.创建一个新的数据库:
create database johndb;
04.通过下面的查询语句,授予用户在数据库上的所有权限。
grant all privileges on database johndb to john;
默认情况下,PostgreSQL 服务器仅仅监听本地网络接口:127.0.0.1
。
为了允许远程访问你的 PostgreSQL 服务器,打开配置文件:
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
CentOS 8 提供了两种 PostgreSQL 版本:9.6 和 10.0。
获取更多关于这个主题的信息,请浏览:PostgreSQL 官方文档。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有