2019
年,随着腾讯公司外部客户的需求,以及公司开源协同战略的推进,tlinux
对外开源并进行了品牌升级,升级为 TencentOS Server
。TencentOS
包含三大场景,分别如下:
TencentOS Server
,即服务器OS,简称 TS
;TencentOS Tiny
,即物联网OS,简称 TT
;TencentOS Edge
,即边缘OS,简称 TE
;参考:TencentOS 相比 CentOS 不同点在哪?
TencentOS Server 是腾讯公司自主研发的定制化服务器操作系统。该系统集成了众多服务
器系列的优点,加入自主研发的软件,便于用户操作使用,提供全方位(内核及用户态)的
操作系统支持。
视频介绍=> TencentOS Server–为云而生的腾讯第三代服务器操作系统
系统特点:安全、易用、稳定、快速、长久支持。安装镜像提供了服务器常用的各种软件支持,同时可以使用线上软件源安装及更新软件。此说明适用于 Tencent OS Server 2.4 发行版与 3.1 发行版的安装与使用,本文中以 Tencent OS Server 3.1
环境为例,讲解 PostgreSQL 13.x
版本的安装。
为了安装软件包,你需要以 root
或者其他有 sudo
权限的用户身份登录系统。
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
sudo dnf install @postgresql:13
sudo dnf install postgresql-contrib
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
sudo systemctl enable --now 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 支持多种身份认证方法。最常用的方法如下:trust、password、ident、peer
auth-method :指定当一个连接匹配这个记录时,要使用的认证方法。
更多详细请查看 => https://www.w3cschool.cn/postgresql13_1/postgresql13_1-z9af3jew.html
PostgreSQL 客户端身份验证(访问控制)通常被定义在 pg_hba.conf
文件中。默认情况下,对于本地连接,PostgreSQL 被设置成身份认证防范 peer。
为了以 postgres 用户身份登录 PostgreSQL 服务器,首先切换用户,然后使用 psql
工具访问 PostgreSQL。
sudo su - postgres
psql
或者使用 sudo
命令访问 PostgreSQL:
sudo -u postgres psql
注意:postgres
用户仅仅在本地被使用。
说明:仅仅超级用户和拥有 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 服务器仅仅监听本地网络接口: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
的发行版,默认支持 PostgreSQL
的 9.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