tlinux 3.1 安装 postgresql 13.x

本文涉及的产品
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: TencentOS Server 3.1 安装 PostgreSQL 13.x

tlinux 3.1 安装 postgresql 13.x

TencentOS Server 是腾讯公司自主研发的定制化服务器操作系统。该系统集成了众多服务
器系列的优点,加入自主研发的软件,便于用户操作使用,提供全方位(内核及用户态)的
操作系统支持。

image.png

系统特点:安全、易用、稳定、快速、长久支持。安装镜像提供了服务器常用的各种软件支持,同时可以使用线上软件源安装及更新软件。此说明适用于 Tencent OS Server 2.4 发行版与 3.1 发行版的安装与使用,本文中以 Tencent OS Server 3.1 环境为例,讲解 PostgreSQL 13.x 版本的安装。

$1 | 前提条件

为了安装软件包,你需要以 root 或者其他有 sudo 权限的用户身份登录系统。

$2 | 安装步骤

  • 2.1 列出可用的 PostgreSQL 模块
dnf module list postgresql

输出显示结果,postgresql4 个版本。
每个版本都有两个部分:服务器和客户端。 服务器版本 10,是默认的版本:

[root@TENCENT64 ~]# dnf module list postgresql
Last metadata expiration check: 0:01:22 ago on Fri 28 Jan 2022 05:14:05 PM CST.
TencentOS Server 3.1 - AppStream
Name                         Stream                   Profiles                                 Summary                                              
postgresql                   9.6                      client, server [d]                       PostgreSQL server and client module                  
postgresql                   10 [d]                   client, server [d]                       PostgreSQL server and client module                  
postgresql                   12                       client, server [d]                       PostgreSQL server and client module                  

TencentOS Server 3.1 - TencentOS-AppStream
Name                         Stream                   Profiles                                 Summary                                              
postgresql                   9.6                      client, server [d]                       PostgreSQL server and client module                  
postgresql                   10 [d]                   client, server [d]                       PostgreSQL server and client module                  
postgresql                   12                       client, server [d]                       PostgreSQL server and client module                  
postgresql                   13 [e]                   client, server [d] [i]                   PostgreSQL server and client module                  

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
  • 2.2 安装服务器版本 13,输入:
sudo dnf install @postgresql:13
  • 2.3 你可能还想安装 contrib 包,它们给 PostgreSQL 数据库提供一些额外的特性:
sudo dnf install postgresql-contrib
  • 2.4 一旦安装完成,使用下面的命令初始化 PostgreSQL 数据库:
sudo postgresql-setup initdb
...
Initializing database ... OK

可能输出如下提示信息:

[root@TENCENT64 /]# sudo postgresql-setup initdb
WARNING: using obsoleted argument syntax, try --help
WARNING: arguments transformed to: postgresql-setup --initdb --unit postgresql
 * Initializing database in '/var/lib/pgsql/data'
 * Initialized, logs are in /var/lib/pgsql/initdb_postgresql.log

查看 pgsql 初始化日志信息:

vim /var/lib/pgsql/initdb_postgresql.log

initdb_postgresql.log 日志信息:

The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with locale "en_US.UTF-8".
The default database encoding has accordingly been set to "UTF8".
The default text search configuration will be set to "english".

Data page checksums are disabled.

fixing permissions on existing directory /var/lib/pgsql/data ... ok
creating subdirectories ... ok
selecting dynamic shared memory implementation ... posix
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting default time zone ... Asia/Shanghai
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
syncing data to disk ... ok

Success. You can now start the database server using:

    /usr/bin/pg_ctl -D /var/lib/pgsql/data -l logfile start
  • 2.5 启动 PostgreSQL 服务,并且启用开机启动 PostgreSQL 服务。
sudo systemctl enable --now postgresql
  • 2.6 验证安装结果,使用 psql 工具连接 PostgreSQL 数据库服务器并且打印它的版本号。
sudo -u postgres psql -c "SELECT version();"

输出显示结果:

[root@TENCENT64 ~]# sudo -u postgres psql -c "SELECT version();"
could not change directory to "/root": Permission denied version                                                   
------------------------------------------------------------------------------------------------------------
 PostgreSQL 13.3 on x86_64-redhat-linux-gnu, compiled by gcc (GCC) 8.4.1 20200928 (Red Hat 8.4.1-1), 64-bit
(1 row)

$3 | PostgreSQL 角色和身份认证方法

PostgreSQL 支持多种身份认证方法。最常用的方法如下:trust、password、ident、peer

auth-method :指定当一个连接匹配这个记录时,要使用的认证方法。
更多详细请查看 => https://www.w3cschool.cn/postgresql13_1/postgresql13_1-z9af3jew.html
  • trust:无条件地允许连接。允许任何可以与PostgreSQL数据库服务器连接的用户以他们期望的任意 PostgreSQL 数据库用户身份登入,而不需要口令或者其他任何认证。
  • reject:无条件地拒绝连接。这有助于从一个组中“过滤出”特定主机,例如一个reject行可以阻塞一个特定的主机连接,而后面一行允许一个特定网络中的其余主机进行连接。
  • scram-sha-256:执行SCRAM-SHA-256认证来验证用户的口令。
  • md5:要求客户端提供一个 md5加密的口令进行认证,这个方法是允许加密口令存储在 pg_shadow 里的唯一的一个方法。
  • password:要求客户端提供一个未加密的口令进行认证。因为口令是以明文形式在网络上发送的,所以我们不应该在不可信的网络上使用这种方式。
  • gss:用 GSSAPI 认证用户。只对 TCP/IP 连接可用。它可以与 GSSAPI 加密一起结合使用。
  • sspi:用 SSPI 来认证用户。只在 Windows 上可用。
  • ident:通过联系客户端的 ident 服务器获取客户端的操作系统名,并且检查它是否匹配被请求的数据库用户名。Ident 认证只能在 TCIP/IP 连接上使用。当为本地连接指定这种认证方式时,将用 peer 认证来替代。
  • peer:通过从内核获得客户端的操作系统用户名并把它用作被允许的数据库用户名(和可选的用户名映射)来工作。和 Ident 一样,这种方法只在本地连接上支持。
  • ldap:使用LDAP服务器认证。
  • radius:用 RADIUS 服务器认证。
  • cert:使用 SSL 客户端证书认证。
  • pam:使用操作系统提供的可插入认证模块服务(PAM)认证。
  • bsd:使用由操作系统提供的 BSD 认证服务进行认证。

PostgreSQL 客户端身份验证(访问控制)通常被定义在 pg_hba.conf 文件中。默认情况下,对于本地连接,PostgreSQL 被设置成身份认证防范 peer。

为了以 postgres 用户身份登录 PostgreSQL 服务器,首先切换用户,然后使用 psql 工具访问 PostgreSQL。

sudo su - postgres
psql

或者使用 sudo 命令访问 PostgreSQL:

sudo -u postgres psql

注意:postgres 用户仅仅在本地被使用。

$4 | 创建 PostgreSQL 角色和数据库

仅仅超级用户和拥有 CREATEROLE 权限的角色可以创建新角色。

举例:我们创建一个名称为 chait 的角色,一个名称为 chaitdb 的数据库,并且授予数据库上的权限。

  • 4.1 连接到 PostgreSQL shell
sudo -u postgres psql
  • 4.2 创建一个新的 PostgreSQL 角色
create role chait
  • 4.3 创建一个新的数据库
create database chaitdb
  • 4.4 通过下面的查询语句,授予用户在数据库上的所有权限
grant all privileges on database chaitdb to chait

$5 | 启用远程访问 PostgreSQL 服务器

默认情况下,PostgreSQL 服务器仅仅监听本地网络接口:127.0.0.1

为了允许远程访问你的 PostgreSQL 服务器,打开配置文件:

# 查找 postgresql.conf 位置
sudo find postgresql.conf
# 编辑 postgresql.conf 文件
sudo vim /var/lib/pgsql/data/postgresql.conf
/CONNECTIONS AND AUTHENTICATION

往下滑动到 CONNECTIONS AND AUTHENTICATION部分,并且添加或者编辑下面的行:

#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------

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

保存文件,并且使用下面的命令重启 PostgreSQL 服务:

:wq!

sudo systemctl restart postgresql

使用 ss 工具来验证这个修改:

[root@TENCENT64 /]# ss -nlt | grep 5432
LISTEN 0      244          0.0.0.0:5432      0.0.0.0:*          
LISTEN 0      244             [::]:5432         [::]:* 

上面的输出显示 PostgreSQL 服务器已经在监听所有网络接口(0.0.0.0)的默认端口。

最后一步是,通过编辑 pg_hba.conf 文件,配置服务器去接受远程连接。下面是一些例子,展示了不同的用户示例:

[root@TENCENT64 /]# ls /var/lib/pgsql/data
base              log           pg_hba.conf    pg_multixact  pg_serial     pg_stat_tmp  pg_twophase  pg_xact               postmaster.opts
current_logfiles  pg_commit_ts  pg_ident.conf  pg_notify     pg_snapshots  pg_subtrans  PG_VERSION   postgresql.auto.conf  postmaster.pid
global            pg_dynshmem   pg_logical     pg_replslot   pg_stat       pg_tblspc    pg_wal       postgresql.conf
[root@TENCENT64 /]# sudo vim /var/lib/pgsql/data/pg_hba.conf

pg_hba.conf 默认配置如下:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            ident
# IPv6 local connections:
host    all             all             ::1/128                 ident
# Allow replication connections from localhost, by a user with the replication privilege.
local   replication     all                                     peer
host    replication     all             127.0.0.1/32            ident
host    replication     all             ::1/128                 ident

修改为如下:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             0.0.0.0/0               trust
# IPv6 local connections:
host    all             all             ::1/128                 ident
# Allow replication connections from localhost, by a user with the replication privilege.
local   replication     all                                     peer
host    replication     all             0.0.0.0/0               trust
host    replication     all             ::1/128                 ident

最后我们用 DBeaver 客户端工具访问链接测试下,如下所示:

image.png

$6 | 总结

tlinux 3.1 是基于 RedHat-CentOS-Release 的发行版,默认支持 PostgreSQL9.6/10/12/13 版本,内核信息查看如下:

WARNING! The remote SSH server rejected X11 forwarding request.
Welcome to TencentOS 3 64bit
Version 3.1 20211028
Last login: Fri Jan 28 17:13:06 2022 from 192.168.10.251
[root@TENCENT64 ~]# uname -a
Linux TENCENT64.site 5.4.119-19-0008 #1 SMP Mon Sep 13 14:54:39 CST 2021 x86_64 x86_64 x86_64 GNU/Linux
[root@TENCENT64 ~]# cat /etc/redhat-release
CentOS Linux release 8.4.2105 (Core) 
[root@TENCENT64 ~]# 

更多 PostgreSQL 版本安装请查看 => https://www.postgresql.org/docs/14/index.html

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
6月前
|
安全 关系型数据库 数据库
PostGreSQL安装压缩包格式
PostGreSQL安装压缩包格式
|
6月前
|
SQL 缓存 关系型数据库
postgresql的安装和使用
postgresql的安装和使用
151 0
|
3月前
|
SQL 关系型数据库 Linux
在CentOS 6上安装和使用PostgreSQL的方法
在CentOS 6上安装和使用PostgreSQL的方法
33 2
|
3月前
|
Ubuntu 关系型数据库 数据库
在Ubuntu 18.04上安装和使用PostgreSQL的方法
在Ubuntu 18.04上安装和使用PostgreSQL的方法
58 1
|
3月前
|
Ubuntu 关系型数据库 Linux
在Ubuntu 14.04上安装和使用PostgreSQL的方法
在Ubuntu 14.04上安装和使用PostgreSQL的方法
36 1
|
3月前
|
关系型数据库 Linux 数据库
在CentOS 7上安装和使用PostgreSQL的方法
在CentOS 7上安装和使用PostgreSQL的方法
215 0
|
3月前
|
SQL 关系型数据库 Linux
如何在 Debian 8 上安装和使用 PostgreSQL 9
如何在 Debian 8 上安装和使用 PostgreSQL 9
48 0
|
4月前
|
安全 关系型数据库 Linux
|
6月前
|
SQL 关系型数据库 数据库
如何在 Debian 12 上安装 PostgreSQL?
【4月更文挑战第25天】
595 0
|
6月前
|
关系型数据库 Linux 网络安全
postgresql 出现连接不上问题(或者安装完连接不上)附加安装教程 亲测有效!
postgresql 出现连接不上问题(或者安装完连接不上)附加安装教程 亲测有效!
155 0