Linux 上安装PostgreSQL-源码编译安装(超详细版!!!)

sun_meiko 2024-06-16 14:37:02 阅读 83

一.服务器资源配置

服务器:CentOS Linux 7 (Core),4CPU 8GB  100GB磁盘。

最小配置

CPU: 至少 2 核心内存: 至少 2 GB硬盘: 至少 10 GB 空间,推荐使用 SSD 以提高性能网络: 100 Mbps场景:这种配置适用于轻量级的测试,如功能验证、小型应用的开发等。

推荐配置

CPU: 4 核心或以上内存: 8 GB 或以上硬盘: 50 GB 或更多的 SSD 空间网络: 1 Gbps场景: 这种配置适用于更加接近生产环境的测试,包括性能测试、大规模数据处理等。

二.官网postgresql 安装包介绍

下载地址

PostgreSQL: File Browser

这六个文件分别是 PostgreSQL 14.6 版本的源代码压缩包及其相关的校验文件。以下是它们之间的区别:

1.postgresql-14.6.tar.bz2:这是 PostgreSQL 14.6 版本的源代码压缩包,使用 bzip2 压缩。可以使用该文件进行手动编译和安装 PostgreSQL。

2.postgresql-14.6.tar.bz2.md5:这个文件包含了 postgresql-14.6.tar.bz2 文件的 MD5 校验值,用于验证下载文件的完整性。可以使用 md5sum 工具来验证文件的 MD5 值。

3.postgresql-14.6.tar.bz2.sha256:这个文件包含了 postgresql-14.6.tar.bz2 文件的 SHA-256 校验值,用于验证下载文件的完整性。可以使用 sha256sum 工具来验证文件的 SHA-256 值。

4.postgresql-14.6.tar.gz:这是 PostgreSQL 14.6 版本的源代码压缩包,使用 gzip 压缩。可以使用该文件进行手动编译和安装 PostgreSQL。

5.postgresql-14.6.tar.gz.md5:这个文件包含了 postgresql-14.6.tar.gz 文件的 MD5 校验值,用于验证下载文件的完整性。可以使用 md5sum 工具来验证文件的 MD5 值。

6.postgresql-14.6.tar.gz.sha256:这个文件包含了 postgresql-14.6.tar.gz 文件的 SHA-256 校验值,用于验证下载文件的完整性。可以使用 sha256sum 工具来验证文件的 SHA-256 值。

通常情况下,可以选择下载其中一个 .tar.bz2.tar.gz 的压缩包,然后使用相应的校验文件(.md5.sha256)验证下载的文件是否完整。.bz2.gz 分别是两种不同的压缩格式,它们在本质上是不同的压缩算法。在选择使用哪一种格式的安装包时,主要的考虑因素包括压缩率、解压速度、以及个人的偏好。

1..bz2(Bzip2)格式:

压缩率: 通常情况下,Bzip2 压缩算法提供了相对较高的压缩率,可以生成较小的文件。解压速度: Bzip2 解压速度相对较慢,但这可能不是在解压缩 PostgreSQL 源代码时的关键因素。使用场景: 适用于希望文件体积尽可能小的情况,例如在网络上下载文件,以减小传输时间和节省带宽。解压命令:tar -jxvf  postgresql-14.6.tar.bz2

2. .gz(Gzip)格式:

压缩率: Gzip 也提供了很好的压缩率,虽然通常略逊于 Bzip2,但在大多数情况下仍然足够。解压速度: Gzip 的解压速度相对较快,这使得它在实际使用中更为广泛。使用场景: 适用于需要在短时间内解压大文件的情况,例如在安装软件时。解压命令:tar -zxvf postgresql-14.6.tar.gz

三.官网postgresql 安装包下载 

#Linux执行如下语句1:

[root@localhost /]#  yum -y install wget

[root@localhost /]#  wget https://ftp.postgresql.org/pub/source/v14.6/postgresql-14.6.tar.gz

这个命令安装 wget,这是一个广泛使用的命令行工具,用于从网络下载文件。wget 支持 HTTP、HTTPS 和 FTP 协议,能够在下载过程中处理重定向、代理、认证等。在安装 PostgreSQL 时,如果需要从互联网下载安装包或其他资源,wget 是一个非常实用的工具。

错误提示:

“ERROR: cannot verify ftp.postgresql.org's certificate, issued by ‘/C=US/O=Let's Encrypt/CN=R3’: Issued certificate has expired.”

是一个 SSL 证书验证错误。这个错误发生的原因是 wget 在尝试通过 HTTPS 连接到 ftp.postgresql.org 时,发现该网站的 SSL 证书已经过期,因此无法确认连接的安全性。

原因解析:

过期的 SSL 证书

网站的 SSL 证书是用来加密网站与访问者之间通信的,它必须是有效且未过期的。如果证书过期,客户端(如 wget)将无法验证服务器的身份,从而导致安全警告。

wget 的安全机制

出于安全考虑, wget 默认不会从一个使用无效或过期证书的服务器下载数据。这是为了防止中间人攻击和数据泄露。

解决方案:

#Linux执行如下语句2:

[root@localhost /]#  yum install -y ca-certificates

这个命令安装 ca-certificates 软件包,它包含了一系列的证书授权(CA)证书。这些证书对于许多网络操作非常重要,因为它们使得系统能够验证和信任通过 HTTPS 等安全协议传输的数据。在下载和安装 PostgreSQL 或其他软件时,如果需要通过 HTTPS 从互联网上获取数据,那么 ca-certificates 包是必要的,因为它能够保证与远程服务器的安全通信。

以上准备好了,即可从官网下载安装包。

#Linux执行如下语句3:

[root@localhost /]#  wget https://ftp.postgresql.org/pub/source/v14.6/postgresql-14.6.tar.gz

备注:也可直接下载安装包到本地,然后上传到服务器上。

四.安装所需的依赖包

#Linux执行如下语句4:

[root@localhost /]#  yum install -y perl-ExtUtils-Embed readline-devel zlib-devel pam-devel libxml2-devel libxslt-devel openldap-devel python-devel gcc-c++ openssl-devel cmake

依赖包说明如下:

序号 依赖包名称 说明
1 perl-ExtUtils-Embed 这个包用于嵌入Perl代码到C程序中。在PostgreSQL中,它可能被用于某些与Perl相关的扩展或自定义脚本功能。
2 readline-devel 这是readline库的开发版本,提供了命令行编辑和历史记录的功能。对于PostgreSQL,它使得使用交互式命令行工具(如psql)更加方便。
3 zlib-devel 这是zlib压缩库的开发版本,用于数据压缩和解压缩。在PostgreSQL中,它用于优化数据存储和传输。
4 pam-devel 这是Pluggable Authentication Modules(PAM)的开发包,用于集成多种认证技术。在PostgreSQL中,PAM可以用于用户认证。
5 libxml2-devel 这是libxml2库的开发版本,它提供了XML的支持。在PostgreSQL中,它用于处理XML数据格式的功能。
6 libxslt-devel 这是libxslt库的开发版本,用于XSLT转换。在PostgreSQL中,可能用于转换XML数据。
7 openldap-devel 这是OpenLDAP的开发包,用于LDAP协议的支持。在PostgreSQL中,它可以用于集成LDAP-based的用户认证。
8 python-devel 这是Python语言的开发包,可能用于支持Python编写的数据库脚本或扩展。
9 gcc-c++ 这是GNU C++编译器,用于编译C++代码。它可能用于编译PostgreSQL中的某些C++编写的部分或扩展。
10 openssl-devel 这是OpenSSL库的开发版本,提供加密和SSL/TLS支持。在PostgreSQL中,它用于确保数据传输的安全性。
11 cmake 这是一个跨平台的安装(构建)系统,用于控制软件编译和测试的过程。在某些PostgreSQL的扩展或自定义安装中可能会用到。

五.源码编译安装

创建文件夹,将postgresql的压缩包移入

#Linux执行如下语句5:

[root@localhost /]# mkdir /soft

[root@localhost /]# mv postgresql-14.6.tar.gz  /soft/

[root@localhost /]# cd /soft/

[root@localhost soft]# ls

postgresql-14.6.tar.gz

解压压缩包到目录中

#Linux执行如下语句6:

[root@localhost soft]# tar -zxvf postgresql-14.6.tar.gz

postgresql-14.6/

postgresql-14.6/.dir-locals.el

postgresql-14.6/contrib/

postgresql-14.6/contrib/tcn/

postgresql-14.6/contrib/tcn/tcn.control

postgresql-14.6/contrib/tcn/Makefile

postgresql-14.6/contrib/tcn/tcn.c

...

postgresql-14.6/doc/KNOWN_BUGS

postgresql-14.6/doc/Makefile

postgresql-14.6/doc/TODO

postgresql-14.6/doc/MISSING_FEATURES

postgresql-14.6/HISTORY

postgresql-14.6/Makefile

postgresql-14.6/README

postgresql-14.6/COPYRIGHT

postgresql-14.6/GNUmakefile.in

postgresql-14.6/.gitattributes

postgresql-14.6/aclocal.m4

postgresql-14.6/INSTALL

 

进入解压后的文件夹

#Linux执行如下语句7:

[root@localhost soft]# cd postgresql-14.6

[root@localhost postgresql-14.6]# ls

aclocal.m4  config  configure  configure.ac  contrib  COPYRIGHT  doc  GNUmakefile.in  HISTORY  INSTALL  Makefile  README  src

创建postgresql的目录,编译postgresql源码

#Linux执行如下语句8:

[root@localhost postgresql-14.6]#  mkdir -p /opt/pgsql/postgresql

[root@localhost postgresql-14.6]# ./configure --prefix=/opt/pgsql/postgresql

checking build system type... x86_64-pc-linux-gnu

checking host system type... x86_64-pc-linux-gnu

checking which template to use... linux

checking whether NLS is wanted... no

checking for default port number... 5432

checking for block size... 8kB

checking for segment size... 1GB

checking for WAL block size... 8kB

checking for gcc... gcc

...

configure: creating ./config.status

config.status: creating GNUmakefile

config.status: creating src/Makefile.global

config.status: creating src/include/pg_config.h

config.status: creating src/include/pg_config_ext.h

config.status: creating src/interfaces/ecpg/include/ecpg_config.h

config.status: linking src/backend/port/tas/dummy.s to src/backend/port/tas.s

config.status: linking src/backend/port/posix_sema.c to src/backend/port/pg_sema.c

config.status: linking src/backend/port/sysv_shmem.c to src/backend/port/pg_shmem.c

config.status: linking src/include/port/linux.h to src/include/pg_config_os.h

config.status: linking src/makefiles/Makefile.linux to src/Makefile.port

###注意事项: –prefix=prefix 安装到prefix指向的目录;默认为/usr/local/pgsql

源码编译安装

#Linux执行如下语句9:

[root@localhost postgresql-14.6]# make

make -C ./src/backend generated-headers

make[1]: Entering directory `/soft/postgresql-14.6/src/backend'

make -C catalog distprep generated-header-symlinks

make[2]: Entering directory `/soft/postgresql-14.6/src/backend/catalog'

make[2]: Nothing to be done for `distprep'.

prereqdir=`cd './' >/dev/null && pwd` && \

...

make[2]: Leaving directory `/soft/postgresql-14.6/src/test/isolation'

make -C test/perl all

make[2]: Entering directory `/soft/postgresql-14.6/src/test/perl'

make[2]: Nothing to be done for `all'.

make[2]: Leaving directory `/soft/postgresql-14.6/src/test/perl'

make[1]: Leaving directory `/soft/postgresql-14.6/src'

make -C config all

make[1]: Entering directory `/soft/postgresql-14.6/config'

make[1]: Nothing to be done for `all'.

make[1]: Leaving directory `/soft/postgresql-14.6/config'

[root@localhost postgresql-14.6]# make install

make -C ./src/backend generated-headers

make[1]: Entering directory `/soft/postgresql-14.6/src/backend'

make -C catalog distprep generated-header-symlinks

make[2]: Entering directory `/soft/postgresql-14.6/src/backend/catalog'

make[2]: Nothing to be done for `distprep'.

make[2]: Nothing to be done for `generated-header-symlinks'.

make[2]: Leaving directory `/soft/postgresql-14.6/src/backend/catalog'

make -C utils distprep generated-header-symlinks

make[2]: Entering directory `/soft/postgresql-14.6/src/backend/utils'

make[2]: Nothing to be done for `distprep'.

make[2]: Nothing to be done for `generated-header-symlinks'.

make[2]: Leaving directory `/soft/postgresql-14.6/src/backend/utils'

make[1]: Leaving directory `/soft/postgresql-14.6/src/backend'

...

/usr/bin/install -c -m 644 ./nls-global.mk '/opt/pgsql/postgresql/lib/pgxs/src/nls-global.mk'

make[1]: Leaving directory `/soft/postgresql-14.6/src'

make -C config install

make[1]: Entering directory `/soft/postgresql-14.6/config'

/usr/bin/mkdir -p '/opt/pgsql/postgresql/lib/pgxs/config'

/usr/bin/install -c -m 755 ./install-sh '/opt/pgsql/postgresql/lib/pgxs/config/install-sh'

/usr/bin/install -c -m 755 ./missing '/opt/pgsql/postgresql/lib/pgxs/config/missing'

make[1]: Leaving directory `/soft/postgresql-14.6/config'

 

完成postgreql的安装。进入/pgsql/postgresql目录看安装后的postgresql的文件。

#Linux执行如下语句10:

[root@localhost postgresql-14.6]#  cd /opt/pgsql/postgresql/

[root@localhost postgresql]# pwd

/opt/pgsql/postgresql

[root@localhost postgresql]# ls

bin include lib share

六.创建用户和用户组

创建用户组postgres、用户postgres

#Linux执行如下语句11:

[root@localhost postgresql]# groupadd postgres

[root@localhost postgresql]# useradd -g postgres postgres

[root@localhost postgresql]# id postgres

uid=1000(postgres) gid=1000(postgres) groups=1000(postgres)

 

七.创建数据主目录

#创建postgresql数据库的数据主目录并修改文件所有者数据库主目录是随实际情况而不同,这里的主目录是在/pgsql/postgresql/data目录下

#Linux执行如下语句12:

[root@localhost postgresql]# cd /opt/pgsql/postgresql

[root@localhost postgresql]#  mkdir data

[root@localhost postgresql]# chown postgres:postgres data

[root@localhost postgresql]# ls -la

total 16

drwxr-xr-x 7 root     root       68 Dec 13 14:53 .

drwxr-xr-x 3 root     root       24 Dec 13 14:40 ..

drwxr-xr-x 2 root     root     4096 Dec 13 14:52 bin

drwxr-xr-x 2 postgres postgres    6 Dec 13 14:53 data

drwxr-xr-x 6 root     root     4096 Dec 13 14:52 include

drwxr-xr-x 4 root     root     4096 Dec 13 14:52 lib

drwxr-xr-x 6 root     root     4096 Dec 13 14:52 share

 

八.配置环境变量

进入home/postgres目录可以看到.bash_profile文件。

#Linux执行如下语句13:

[root@localhost postgresql]# cd /home/postgres/

[root@localhost postgres]# ls -la

total 12

drwx------  2 postgres postgres  62 Dec 13 14:53 .

drwxr-xr-x. 3 root     root      22 Dec 13 14:53 ..

-rw-r--r--  1 postgres postgres  18 Apr 11  2018 .bash_logout

-rw-r--r--  1 postgres postgres 193 Apr 11  2018 .bash_profile

-rw-r--r--  1 postgres postgres 231 Apr 11  2018 .bashrc

 

修改.bash_profile文件。

#Linux执行如下语句14:

[root@localhost postgres]# vi .bash_profile

[root@localhost postgres]# cat .bash_profile

# .bash_profile

# Get the aliases and functions

if [ -f ~/.bashrc ]; then

        . ~/.bashrc

fi

# User specific environment and startup programs

PATH=$PATH:$HOME/.local/bin:$HOME/bin

export PATH

export PGHOME=/opt/pgsql/postgresql

export PGDATA=$PGHOME/data

export PATH=$PATH:$HOME/bin:$PGHOME/bin

 

保存,退出vi。执行以下命令,使环境变量生效

#Linux执行如下语句15:

[root@localhost postgres]# source .bash_profile

九.initdb初使化数据库

切换用户到postgres并使用initdb初使化数据库

#Linux执行如下语句16:

[root@localhost postgres]# su - postgres

[postgres@localhost ~]$ initdb

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 /opt/pgsql/postgresql/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 ... PRC

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 /opt/pgsql/postgresql/data -l logfile start

 

查看/pgsql/postgresql/data目录,看是否初始化成功

#Linux执行如下语句17:

[postgres@localhost ~]$ ls -lh $PGDATA

total 56K

drwx------ 5 postgres postgres   41 Dec 13 14:55 base

drwx------ 2 postgres postgres 4.0K Dec 13 14:55 global

drwx------ 2 postgres postgres    6 Dec 13 14:55 pg_commit_ts

drwx------ 2 postgres postgres    6 Dec 13 14:55 pg_dynshmem

-rw------- 1 postgres postgres 4.7K Dec 13 14:55 pg_hba.conf

-rw------- 1 postgres postgres 1.6K Dec 13 14:55 pg_ident.conf

drwx------ 4 postgres postgres   68 Dec 13 14:55 pg_logical

drwx------ 4 postgres postgres   36 Dec 13 14:55 pg_multixact

drwx------ 2 postgres postgres    6 Dec 13 14:55 pg_notify

drwx------ 2 postgres postgres    6 Dec 13 14:55 pg_replslot

drwx------ 2 postgres postgres    6 Dec 13 14:55 pg_serial

drwx------ 2 postgres postgres    6 Dec 13 14:55 pg_snapshots

drwx------ 2 postgres postgres    6 Dec 13 14:55 pg_stat

drwx------ 2 postgres postgres    6 Dec 13 14:55 pg_stat_tmp

drwx------ 2 postgres postgres   18 Dec 13 14:55 pg_subtrans

drwx------ 2 postgres postgres    6 Dec 13 14:55 pg_tblspc

drwx------ 2 postgres postgres    6 Dec 13 14:55 pg_twophase

-rw------- 1 postgres postgres    3 Dec 13 14:55 PG_VERSION

drwx------ 3 postgres postgres   60 Dec 13 14:55 pg_wal

drwx------ 2 postgres postgres   18 Dec 13 14:55 pg_xact

-rw------- 1 postgres postgres   88 Dec 13 14:55 postgresql.auto.conf

-rw------- 1 postgres postgres  29K Dec 13 14:55 postgresql.conf

 

十.配置服务

 修改/opt/pgsql/postgresql/data目录下postgresql.conf文件,该文件配置PostgreSQL数据库服务器的相应的参数。

#Linux执行如下语句18:

[postgres@localhost ~]$ cd /opt/pgsql/postgresql/data

 

[postgres@localhost data]$ vi postgresql.conf

[postgres@localhost data]$ cat  postgresql.conf

...

#------------------------------------------------------------------------------

# CONNECTIONS AND AUTHENTICATION

#------------------------------------------------------------------------------

# - Connection Settings -

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

                                        # comma-separated list of addresses;

                                        # defaults to 'localhost'; use '*' for all

                                        # (change requires restart)

port = 5432                             # (change requires restart)

max_connections = 100                   # (change requires restart)

 

...

注意:其中,参数“listen_addresses”表示监听的IP地址,默认是在localhost处监听,也就是127.0.0.1的ip地址上监听,只接受来自本机localhost的连接请求,这会让远程的主机无法登陆这台数据库,如果想从其他的机器上登陆这台数据库,需要把监听地址改为实际网络的地址,一种简单的方法是,将行开头的#去掉,把这个地址改为*,表示在本地的所有地址上监听。

 修改/opt/pgsql/postgresql/data目录下pg_hba.conf 文件,该文件 配置对数据库的访问权限。

#Linux执行如下语句19:

[postgres@localhost data]$ vi pg_hba.conf

[postgres@localhost data]$ cat  pg_hba.conf

...

# 添加下面这一行 

# IPv4 local connections:

host    all             all             0.0.0.0/0               trust

host    all             all             127.0.0.1/32            trust

...

十一.设置开机自启动

PostgreSQL的开机自启动脚本位于PostgreSQL源码目录的contrib/start-scripts路径下。linux文件即为linux系统上的启动脚本。需切换为root用户。

#Linux执行如下语句20:

[postgres@localhost start-scripts]$ su root

[root@localhost data]# cd /soft/postgresql-14.6/contrib/start-scripts

[root@localhost start-scripts]# ls

freebsd  linux  macos

切换为root用户,修改linux文件属性,添加X属性

#Linux执行如下语句21:

[root@localhost start-scripts]# chmod a+x linux

复制linux文件到/etc/init.d目录下,更名为postgresql

#Linux执行如下语句22:

[root@localhost start-scripts]# cp linux /etc/init.d/postgresql

修改/etc/init.d/postgresql文件的两个变量

#Linux执行如下语句23:

[root@localhost start-scripts]# vi /etc/init.d/postgresql

[root@localhost start-scripts]# cat  /etc/init.d/postgresql

...

## EDIT FROM HERE

# Installation prefix

#prefix=/usr/local/pgsql

prefix=/opt/pgsql/postgresql

# Data directory

#PGDATA="/usr/local/pgsql/data"

PGDATA="/opt/pgsql/postgresql/data"

...

设置postgresql服务开机自启动

#Linux执行如下语句24:

[root@localhost start-scripts]# chkconfig --add postgresql

[root@localhost start-scripts]# chkconfig

Note: This output shows SysV services only and does not include native

      systemd services. SysV configuration data might be overridden by native

      systemd configuration.

      If you want to list systemd services use 'systemctl list-unit-files'.

      To see services enabled on particular target use

      'systemctl list-dependencies [target]'.

netconsole      0:off   1:off   2:off   3:off   4:off   5:off   6:off

network         0:off   1:off   2:on    3:on    4:on    5:on    6:off

postgresql      0:off   1:off   2:on    3:on    4:on    5:on    6:off

 

十二.设置防火墙

安装依赖包

#Linux执行如下语句25:

[root@localhost /]#  yum -y install firewalld

设置防火墙

#Linux执行如下语句26:

[root@localhost start-scripts]# systemctl start firewalld

[root@localhost start-scripts]# systemctl enable firewalld

[root@localhost start-scripts]# systemctl status firewalld

● firewalld.service - firewalld - dynamic firewall daemon

   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)

   Active: active (running) since Wed 2023-12-13 15:11:53 CST; 17s ago

     Docs: man:firewalld(1)

 Main PID: 20257 (firewalld)

   CGroup: /system.slice/firewalld.service

           └─20257 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid

Dec 13 15:11:53 localhost.localdomain systemd[1]: Starting firewalld - dynamic firewall daemon...

Dec 13 15:11:53 localhost.localdomain systemd[1]: Started firewalld - dynamic firewall daemon.

Dec 13 15:11:53 localhost.localdomain firewalld[20257]: WARNING: AllowZoneDrifting is enabled. This is considered an insecure configuration option

添加postgresql服务到防火墙,并加载

#Linux执行如下语句27:

[root@localhost start-scripts]# firewall-cmd --permanent --zone=public --add-service=postgresql

success

[root@localhost start-scripts]# firewall-cmd --reload

success

查看端口是否开放

#Linux执行如下语句28:

[root@localhost start-scripts]# /sbin/iptables -L -n

Chain INPUT (policy ACCEPT)

target     prot opt source               destination

ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED

ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0

INPUT_direct  all  --  0.0.0.0/0            0.0.0.0/0

INPUT_ZONES_SOURCE  all  --  0.0.0.0/0            0.0.0.0/0

INPUT_ZONES  all  --  0.0.0.0/0            0.0.0.0/0

DROP       all  --  0.0.0.0/0            0.0.0.0/0            ctstate INVALID

REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)

target     prot opt source               destination

ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED

ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0

FORWARD_direct  all  --  0.0.0.0/0            0.0.0.0/0

FORWARD_IN_ZONES_SOURCE  all  --  0.0.0.0/0            0.0.0.0/0

FORWARD_IN_ZONES  all  --  0.0.0.0/0            0.0.0.0/0

FORWARD_OUT_ZONES_SOURCE  all  --  0.0.0.0/0            0.0.0.0/0

FORWARD_OUT_ZONES  all  --  0.0.0.0/0            0.0.0.0/0

DROP       all  --  0.0.0.0/0            0.0.0.0/0            ctstate INVALID

REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)

target     prot opt source               destination

ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0

OUTPUT_direct  all  --  0.0.0.0/0            0.0.0.0/0

Chain FORWARD_IN_ZONES (1 references)

target     prot opt source               destination

FWDI_public  all  --  0.0.0.0/0            0.0.0.0/0           [goto]

Chain FORWARD_IN_ZONES_SOURCE (1 references)

target     prot opt source               destination

Chain FORWARD_OUT_ZONES (1 references)

target     prot opt source               destination

FWDO_public  all  --  0.0.0.0/0            0.0.0.0/0           [goto]

Chain FORWARD_OUT_ZONES_SOURCE (1 references)

target     prot opt source               destination

Chain FORWARD_direct (1 references)

target     prot opt source               destination

Chain FWDI_public (1 references)

target     prot opt source               destination

FWDI_public_log  all  --  0.0.0.0/0            0.0.0.0/0

FWDI_public_deny  all  --  0.0.0.0/0            0.0.0.0/0

FWDI_public_allow  all  --  0.0.0.0/0            0.0.0.0/0

ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0

Chain FWDI_public_allow (1 references)

target     prot opt source               destination

Chain FWDI_public_deny (1 references)

target     prot opt source               destination

Chain FWDI_public_log (1 references)

target     prot opt source               destination

Chain FWDO_public (1 references)

target     prot opt source               destination

FWDO_public_log  all  --  0.0.0.0/0            0.0.0.0/0

FWDO_public_deny  all  --  0.0.0.0/0            0.0.0.0/0

FWDO_public_allow  all  --  0.0.0.0/0            0.0.0.0/0

Chain FWDO_public_allow (1 references)

target     prot opt source               destination

Chain FWDO_public_deny (1 references)

target     prot opt source               destination

Chain FWDO_public_log (1 references)

target     prot opt source               destination

Chain INPUT_ZONES (1 references)

target     prot opt source               destination

IN_public  all  --  0.0.0.0/0            0.0.0.0/0           [goto]

Chain INPUT_ZONES_SOURCE (1 references)

target     prot opt source               destination

Chain INPUT_direct (1 references)

target     prot opt source               destination

Chain IN_public (1 references)

target     prot opt source               destination

IN_public_log  all  --  0.0.0.0/0            0.0.0.0/0

IN_public_deny  all  --  0.0.0.0/0            0.0.0.0/0

IN_public_allow  all  --  0.0.0.0/0            0.0.0.0/0

ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0

Chain IN_public_allow (1 references)

target     prot opt source               destination

ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22 ctstate NEW,UNTRACKED

ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:5432 ctstate NEW,UNTRACKED

Chain IN_public_deny (1 references)

target     prot opt source               destination

Chain IN_public_log (1 references)

target     prot opt source               destination

Chain OUTPUT_direct (1 references)

target     prot opt source               destination

 

十三.启动数据库服务

启动PostgreSQL服务

#Linux执行如下语句29:

[root@localhost start-scripts]# service postgresql start

Starting PostgreSQL: ok

 

查看PostgreSQL服务,确认是否启动成功

#Linux执行如下语句30:

[root@localhost start-scripts]# ps -ef | grep postgres

root     20099  9787  0 14:55 pts/0    00:00:00 su - postgres

postgres 20100 20099  0 14:55 pts/0    00:00:00 -bash

postgres 20424     1  0 15:13 ?        00:00:00 /opt/pgsql/postgresql/bin/postmaster -D /opt/pgsql/postgresql/data

postgres 20426 20424  0 15:13 ?        00:00:00 postgres: checkpointer

postgres 20427 20424  0 15:13 ?        00:00:00 postgres: background writer

postgres 20428 20424  0 15:13 ?        00:00:00 postgres: walwriter

postgres 20429 20424  0 15:13 ?        00:00:00 postgres: autovacuum launcher

postgres 20430 20424  0 15:13 ?        00:00:00 postgres: stats collector

postgres 20431 20424  0 15:13 ?        00:00:00 postgres: logical replication launcher

[root@localhost start-scripts]# netstat -ltnup | grep post

tcp        0      0 0.0.0.0:5432            0.0.0.0:*               LISTEN      20424/postmaster

tcp6       0      0 :::5432                 :::*                    LISTEN      20424/postmaster

 

十四.测试本地连接

切换设置的postgres用户

#Linux执行如下语句31:

[root@localhost start-scripts]# su - postgres

Last login: Wed Dec 13 15:13:04 CST 2023 on pts/0

[postgres@localhost ~]$  psql

psql (14.6)

Type "help" for help.

postgres=# \l

                                  List of databases

   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges

-----------+----------+----------+-------------+-------------+-----------------------

 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |

 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +

           |          |          |             |             | postgres=CTc/postgres

 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +

           |          |          |             |             | postgres=CTc/postgres

(3 rows)

postgres=#

postgres=#

postgres=#

 

十五.测试远程连接(navicat工具)



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。