0


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

一.服务器资源配置

  • 服务器: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 证书已经过期,因此无法确认连接的安全性。

原因解析:

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

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


本文转载自: https://blog.csdn.net/sun_meiko/article/details/134966991
版权归原作者 sun_meiko 所有, 如有侵权,请联系我们删除。

“Linux 上安装PostgreSQL-源码编译安装(超详细版!!!)”的评论:

还没有评论