TencentOS Server 安装 PostgreSQL

news2024/11/25 13:37:58

TencentOS 简介

2019 年,随着腾讯公司外部客户的需求,以及公司开源协同战略的推进,tlinux 对外开源并进行了品牌升级,升级为 TencentOS ServerTencentOS 包含三大场景,分别如下:

  • TencentOS Server,即服务器OS,简称 TS
  • TencentOS Tiny,即物联网OS,简称 TT
  • TencentOS Edge,即边缘OS,简称 TE

TencentOS 整体布局

参考:TencentOS 相比 CentOS 不同点在哪?

关于 TencentOS Server

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

TencentOS Server 安装 PostgreSQL

视频介绍=> TencentOS Server–为云而生的腾讯第三代服务器操作系统

image.png

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

前提条件

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

安装步骤

2.1 列出可用的 PostgreSQL 模块

dnf module list postgresql

输出结果显示,postgresql 有4个版本。每个版本都有两个部分:服务器和客户端。 服务器版本 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)

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 用户仅仅在本地被使用。

创建 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

启用远程访问 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 客户端工具访问链接测试下,如下所示:

访问链接测试

总结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/401654.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL DQL语句基础(一)

目录 DQL 基本语法 基础查询 1、查询多个字段 2、字段设置别名 3、去除重复记录 条件查询 语法 条件 案例 聚合函数 常见的聚合函数 语法 DQL DQL英文全称是Data Query Language(数据查询语言),数据查询语言,用来查询数据库中表的记录。 基…

java面试-jvm

JVM JVM 是 java 虚拟机,简单来说就是能执行标准 java 字节码的虚拟计算机 JVM 是如何工作的 首先程序在执行之前先要把 Java 代码(.java)转换成字节码(.class),JVM 通过类加载器(ClassLoade…

Linux:创建守护进程,注册信号捕获回调函数,使用shell脚本代码管理守护进程

1.创建守护进程&#xff0c;编译时命名为a.out. 2.在守护进程中注册信号捕捉函数。 3.使用脚本发送自定义信号SIGUSR1给进程a.out。 4.守护进程捕获函数catchSignal&#xff08;&#xff09;捕捉到10号函数SIGUSR1退出进程。 创建守护进程代码&#xff1a; #include <stdi…

第八批国家药品集中采购-(附药品集采目录明细下载)

2023年3月2日&#xff0c;‘国家组织药品联合采购办公室’发出了《全国药品集中采购文件》&#xff0c;宣告了第八批国家组织药品集中采购工作正式开展&#xff0c;其公告中还包含三个附表分别为‘采购品种目录’、‘各地区首年约定采购量’、‘各采购品种首年约定采购量’&…

python for循环中 if else语句缩进对应问题

python for循环中 if else语句缩进对应问题 忙里偷闲&#xff0c;备考计算机二级&#xff0c;发现一个好玩的小知识&#xff0c;想分享一下自己当时的思考以及解决问题的过程 也许点进来的你会莫名其妙&#xff0c;if和else语句的缩进必须对齐&#xff0c;这不是连初学者都一…

【数据结构】带你深入理解栈

一. 栈的基本概念&#x1f4ab;栈是一种特殊的线性表。其只允许在固定的一端进行插入和删除元素的操作&#xff0c;进行数据的插入和删除的一端称作栈顶&#xff0c;另外一端称作栈底。栈不支持随机访问&#xff0c;栈的数据元素遵循后进先出的原则&#xff0c;即LIFO&#xff…

怎么把pdf转换成图片?这个方法你值得拥有

想要高效率的工作&#xff0c;除了需要大家合理安排时间之外&#xff0c;一些能够辅助高效工作的工具也是必不可少的。就拿要把一份pdf文件转换成若干图片来说&#xff0c;如果不知道方法&#xff0c;找不到合适的转换工具&#xff0c;那么想要完成这一任务&#xff0c;势必要花…

万里长征——基础IO

目录 文件常识 回顾C语言的文件操作 系统层面的文件操作 文件操作的本质 文件fd的分配规则及重定向 linux下一切皆文件 详谈缓冲区问题 文件常识 1、文件 文件内容 文件属性 2、空文件也要在磁盘上占据空间。因为空文件虽然内容为空&#xff0c;但它的属性也会占据空…

JVM学习笔记十:执行引擎

0. 前言 声明&#xff1a; 感谢尚硅谷宋红康老师的讲授。 感谢广大网友共享的笔记内容。 B站&#xff1a;https://www.bilibili.com/video/BV1PJ411n7xZ 本文的内容基本来源于宋老师的课件&#xff0c;其中有一些其他同学共享的内容&#xff0c;也有一些自己的理解内容。 1. …

设计模式——工厂方法模式(创建型)

创建型模式提供了创建对象的机制&#xff0c;能够提升已有代码的灵活性和可复用性。一、工厂方法工厂方法模式是一种创建型设计模式&#xff0c;其在父类中提供一个创建对象的方法&#xff0c;允许子类决定实例化对象的类型。问题&#xff1a;假设你正在开发一款物流管理应用。…

STA环境

目录1. CMOS逻辑门2. 波形3. 时钟3.1. 指定时钟create_clock时钟延迟set_clock_latency 时钟不确定度set_clock_uncertainty 跨时钟域set_false_path3.2. 衍生时钟3.3. 虚拟时钟4. 时序路径2.1. 输入路径2.2. 输出路径2.3. 点对点约束本文介绍在执行静态时序分析&#xff08;St…

顺序表的基本操作

目录 一.什么是顺序表 二.顺序表的基本操作 1.初始化 2.增容 3.尾插 4.头插 5.尾删 6.头删 7.指定位置插入 8.指定位置删除 9.打印 10.查找 11.销毁 一.什么是顺序表 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构&#xff0c;一般情况下采用数组…

IBMMQ教程二(window版安装)

下载下载地址&#xff1a;https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/messaging/mqadv/我这里选择的是9.1.0.0版本安装将下载完成的压缩包解压双击Setup.exe直接运行点击软件需求查看系统配置是否满足&#xff0c;右边绿色的对号说明满足需求&#xff0c…

linux 端口查询命令

任何知识都是用进废退&#xff0c;有段时间没摸linux&#xff0c;这大脑里的知识点仿佛全部消失了&#xff0c;就无语。 索性&#xff0c;再写一篇记录&#xff0c;加强一下记忆&#xff0c;下次需要就看自己的资料好了。lsof命令Linux端口查询命令可以通过lsof实现&#xff1a…

教育小程序开发解决方案

如今无论是国家还是家庭对于教育的重视性也越来越高&#xff0c;都希望自己的孩子能够赢在起跑线上&#xff0c;但是因为工作的缘故许多家长并没有过多的精力去辅导孩子学习&#xff0c;再加上许多家长对于教育也并没有经验与技巧。而这些都充分体现了正确教育的重要性。 那么一…

2023金三银四常见Handler面试总结,附带答案

以下的Handler的面试题都是在面试过程中总结出来比较常见的面试题&#xff0c;现在分享给大家&#xff0c;希望可以帮助你们&#xff01;1.Handler的实现原理从四个方面看Handler、Message、MessageQueue 和 Looper Handler:负责消息的发送和处理 Message:消息对象&#xff0c;…

FL Studio21最新中文版下载及切换语言教程

随着近年来摇滚、电音的发展&#xff0c;越来越多的人开始对电子音乐编曲感兴趣&#xff0c;而电音编曲的首要条件&#xff0c;就是需要一个好的DAW&#xff08;数字音频工作站&#xff09;&#xff0c;常用的DAW有很多&#xff0c;例如Cubase、Nuendo、Pro Tools、 SONAR等等&…

Unity - 搬砖日志 - Texture.mipmapBias 无效的解决方法

文章目录环境原因解決方案Referenes环境 Unity : 2020.3.37f1 Pipeline : BRP 原因 因为美术发现有些贴图太糊&#xff0c;但是经过研究发现&#xff0c;mipmap0就是完全够精度的 但是不可能还要提升贴图的尺寸&#xff0c;因为经过多方咨询&#xff08;咨询TA大佬&#xff0…

2023 年会是网络安全的关键年吗?

过去 12 个月对网络安全领域和周围的每个人来说再次充满挑战。和往年不同&#xff0c;感觉很不一样&#xff0c;攻击源源不断。过去&#xff0c;大型漏洞每季度发生一次&#xff0c;但在过去一年中&#xff0c;在某些情况下&#xff0c;我们几乎每周都会处理严重漏洞。 已知利…

itop-3568开发板驱动学习笔记(7)高级字符设备(一)阻塞 IO 和 非阻塞 IO

《【北京迅为】itop-3568开发板驱动开发指南.pdf》 学习笔记 文章目录阻塞 IO非阻塞 IOIO 实验&#xff08;使用等待队列&#xff09;等待队列阻塞 IO 实验非阻塞 IO 实验阻塞 IO I/O输入/输出(Input/Output)&#xff0c;分为IO设备和IO接口两个部分。 在POSIX兼容的系统上&…