1、搭建环境

操作系统

[root@kylinmydb01 ~]# cat /etc/os-release 
NAME="Kylin Linux Advanced Server"
VERSION="V10 (Tercel)"
ID="kylin"
VERSION_ID="V10"
PRETTY_NAME="Kylin Linux Advanced Server V10 (Tercel)"
ANSI_COLOR="0;31"

数据库

postgres=# show server_version;
 server_version 
----------------
 14.7
(1 row)

2、安装postgresql14

2.1安装的几种方式

(1)通过yum方式进行安装

(2)RPM包进行安装

(3)通过源码编译安装 

2.2 postgresql 14安装

2.2.1 关闭防火墙

systemctl status firewalld.service
systemctl stop firewalld.service
systemctl disable firewalld.service

2.2.2 配置本地yum源

本次使用虚拟机进行搭建,可以直接使用系统iso镜像,配置本地yum源,用于安装依赖包

[root@kylinmydb01 ~]# cd /mnt
[root@kylinmydb01 ~]# mkdir dvd
[root@kylinmydb01 ~]# mount /dev/sr0 /mnt/dvd
[root@kylinmydb01 ~]#
[root@kylinmydb01 ~]# cd /etc/yum.repos.d/
[root@kylinmydb01 ~]# ls -lrt
[root@kylinmydb01 ~]# vi kylin_x86_64.repo 
[root@kylinmydb01 ~]# cp kylin_x86_64.repo kylin_x86_64.repo.bak
[root@kylinmydb01 ~]# ls -lrt
[root@kylinmydb01 ~]# vi kylin_x86_64.repo

[kylin10]
name = mykylin
baseurl = file:///mnt/dvd
gpgcheck = 0
enabled = 1

[root@kylinmydb01 ~]# yum clean all
[root@kylinmydb01 ~]# yum makecache
[root@kylinmydb01 ~]# yum list

2.2.3 安装依赖包

yum install -y cmake make gcc zlib zlib-devel gcc-c++ perl readline readline-devel python36 tcl openssl ncurses-devel openldap pam flex

2.2.4 创建用户及目录

-创建用户

useradd pgsql
echo "123456" | passwd --stdin pgsql


--创建目录
mkdir -p /data/postgresql/{pgdata,pg14}

--授权

chown -R pgsql:pgsql /data/postgresql 
chmod -R 775 /data/postgresql

2.2.5 上传文件,并解压

[root@kylinmydb01 data]# cd software/
[root@kylinmydb01 software]# ls -lrt
总用量 28392
-rw-r--r-- 1 root root 29070900  6月 20 16:58 postgresql-14.7.tar.gz
[root@kylinmydb01 software]# 
[root@kylinmydb01 software]# chmod 777 postgresql-14.7.tar.gz 
[root@kylinmydb01 software]# su - pgsql
[pgsql@kylinmydb01 ~]$ cd /data/software/
[pgsql@kylinmydb01 software]$ 
[pgsql@kylinmydb01 software]$ tar -zxvf postgresql-14.7.tar.gz -C /data/postgresql/pg14/

2.2.6 配置&&编译&&安装

[pgsql@kylinmydb01 postgresql-14.7]$ pwd
/data/postgresql/pg14/postgresql-14.7
[pgsql@kylinmydb01 postgresql-14.7]$ ls -lrt
总用量 772
-rw-r--r--  1 pgsql pgsql   1213  2月  7  2023 README
-rw-r--r--  1 pgsql pgsql   1665  2月  7  2023 Makefile
-rw-r--r--  1 pgsql pgsql    277  2月  7  2023 HISTORY
-rw-r--r--  1 pgsql pgsql   4279  2月  7  2023 GNUmakefile.in
-rw-r--r--  1 pgsql pgsql   1192  2月  7  2023 COPYRIGHT
-rw-r--r--  1 pgsql pgsql  86614  2月  7  2023 configure.ac
-rwxr-xr-x  1 pgsql pgsql 594425  2月  7  2023 configure     --源码安装的配置脚本
-rw-r--r--  1 pgsql pgsql    445  2月  7  2023 aclocal.m4
drwxrwxr-x 58 pgsql pgsql   4096  2月  7  2023 contrib       --已打包到PG源码中的第三方贡献的插件源码
drwxrwxr-x  2 pgsql pgsql   4096  2月  7  2023 config
drwxrwxr-x  3 pgsql pgsql     87  2月  7  2023 doc
-rw-r--r--  1 pgsql pgsql  63935  2月  7  2023 INSTALL    --安装说明
drwxrwxr-x 16 pgsql pgsql    328  2月  7  2023 src         --源代码
[pgsql@kylinmydb01 postgresql-14.7]$ 

--配置
./configure --prefix=/data/postgresql/pg14/postgresql-14.7

--编译&&安装
make && make install

2.2.7 配置环境变量

[pgsql@kylinmydb01 ~]$ vi .bash_profile 

export PGPORT=5432
export PGDATA=/data/postgresql/pgdata
export PGHOME=/data/postgresql/pg14/postgresql-14.7
export LD_LIBRARY_PATH=/$PGHOME/lib:$LD_LIBRARY_PATH
export PATH=$PGHOME/bin:$PATH:.
export PGHOST=$PGDATA
export PGUSER=postgres
export PGDATABASE=postgres

[pgsql@kylinmydb01 ~]$ source ~/.bash_profile

2.2.8 初始化数据库

[pgsql@kylinmydb01 ~]$ cd /data/postgresql/pg14/postgresql-14.7/bin
[pgsql@kylinmydb01 bin]$ ./initdb -D /data/postgresql/pgdata -E UTF8 --locale=en_US.utf8 -U postgres

---------------------------------------------------------

[pgsql@kylinmydb01 bin]$ ./initdb -D /data/postgresql/pgdata -E UTF8 --locale=en_US.utf8 -U postgres
The files belonging to this database system will be owned by user "pgsql".
This user must also own the server process.

The database cluster will be initialized with locale "en_US.utf8".
The default text search configuration will be set to "english".

Data page checksums are disabled.

fixing permissions on existing directory /data/postgresql/pgdata ... 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

initdb: warning: enabling "trust" authentication for local connections
You can change this by editing pg_hba.conf or using the option -A, or
--auth-local and --auth-host, the next time you run initdb.

Success. You can now start the database server using:

    ./pg_ctl -D /data/postgresql/pgdata -l logfile start

[pgsql@kylinmydb01 bin]$ 

2.2.9 修改配置参数

[pgsql@kylinmydb01 pgdata]$ pwd
/data/postgresql/pgdata
[pgsql@kylinmydb01 pgdata]$ ls -lrt
总用量 56
-rw------- 1 pgsql pgsql     3  6月 20 17:33 PG_VERSION
drwx------ 2 pgsql pgsql     6  6月 20 17:33 pg_twophase
drwx------ 2 pgsql pgsql     6  6月 20 17:33 pg_tblspc
drwx------ 2 pgsql pgsql     6  6月 20 17:33 pg_stat_tmp
drwx------ 2 pgsql pgsql     6  6月 20 17:33 pg_stat
drwx------ 2 pgsql pgsql     6  6月 20 17:33 pg_snapshots
drwx------ 2 pgsql pgsql     6  6月 20 17:33 pg_serial
drwx------ 2 pgsql pgsql     6  6月 20 17:33 pg_replslot
drwx------ 2 pgsql pgsql     6  6月 20 17:33 pg_notify
drwx------ 4 pgsql pgsql    36  6月 20 17:33 pg_multixact
drwx------ 2 pgsql pgsql     6  6月 20 17:33 pg_dynshmem
drwx------ 2 pgsql pgsql     6  6月 20 17:33 pg_commit_ts
-rw------- 1 pgsql pgsql 28769  6月 20 17:33 postgresql.conf  --参数文件
-rw------- 1 pgsql pgsql    88  6月 20 17:33 postgresql.auto.conf
-rw------- 1 pgsql pgsql  1636  6月 20 17:33 pg_ident.conf
-rw------- 1 pgsql pgsql  4789  6月 20 17:33 pg_hba.conf   --客户端认证控制文件
drwx------ 2 pgsql pgsql    18  6月 20 17:33 pg_xact
drwx------ 3 pgsql pgsql    60  6月 20 17:33 pg_wal
drwx------ 2 pgsql pgsql    18  6月 20 17:33 pg_subtrans
drwx------ 2 pgsql pgsql  4096  6月 20 17:33 global
drwx------ 5 pgsql pgsql    41  6月 20 17:33 base
drwx------ 4 pgsql pgsql    68  6月 20 17:33 pg_logical
[pgsql@kylinmydb01 pgdata]$ 

[pgsql@kylinmydb01 pgdata]$ vi postgresql.conf

listen_addresses = '*'    ##监听客户端地址,默认本地
port = 5432               ##pg端口
unix_socket_directories = '/data/postgresql/pgdata'     ##socket文件位置,默认/tmp下  
logging_collector = on    ##开启日志记录
log_directory = 'pg_log'  ##日志目录名,在$PGDATA下
log_filename = 'postgresql-%a.log'
log_truncate_on_rotation = on

--授权远程访问

[pgsql@kylinmydb01 pgdata]$ vi pg_hba.conf

# TYPE  DATABASE        USER            ADDRESS                 METHOD
host    all             all             0.0.0.0/0               md5


------------------------------------------------------------------------------

--TYPE(连接方式)
host/local/hostssl/hostnossl
host 通过TCP/IP
local 本地认证
hostssl 使用ssl加密的TCP/IP
hostnossl 不使用ssl加密的TCP/IP
--METHOD(认证方式)
trust/reject/md5/password/scram-sha-256
trust 免密登录
reject 黑名单拒绝
md5 md5加密的密码认证
password 明文密码认证
scram-sha-256 scram-sha-256加密的密码认证

2.2.10 启动数据库

[pgsql@kylinmydb01 ~]$ pg_ctl start
waiting for server to start....2026-06-20 17:47:37.139 CST [17563] LOG:  redirecting log output to logging collector process
2026-06-20 17:47:37.139 CST [17563] HINT:  Future log output will appear in directory "pg_log".
 done
server started

2.2.11 登录数据库

[pgsql@kylinmydb01 ~]$ psql
或者
[pgsql@kylinmydb01 ~]$ psql -h localhost -p 5432 -d postgres -U postgres

-------------------------------------------------------------------

[pgsql@kylinmydb01 ~]$ psql
psql (14.7)
Type "help" for help.

postgres=# \l
                                 List of databases
   Name    |  Owner   | Encoding |  Collate   |   Ctype    |   Access privileges   
-----------+----------+----------+------------+------------+-----------------------
 postgres  | postgres | UTF8     | en_US.utf8 | en_US.utf8 | 
 template0 | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres          +
           |          |          |            |            | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres          +
           |          |          |            |            | postgres=CTc/postgres
(3 rows)

postgres=# \q
[pgsql@kylinmydb01 ~]$ psql -h localhost -p 5432 -d postgres -U postgres
psql (14.7)
Type "help" for help.

postgres=# \l
                                 List of databases
   Name    |  Owner   | Encoding |  Collate   |   Ctype    |   Access privileges   
-----------+----------+----------+------------+------------+-----------------------
 postgres  | postgres | UTF8     | en_US.utf8 | en_US.utf8 | 
 template0 | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres          +
           |          |          |            |            | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres          +
           |          |          |            |            | postgres=CTc/postgres
(3 rows)

postgres=# 

      - END -  

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐