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

这篇具有很好参考价值的文章主要介绍了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

Linux 上安装PostgreSQL-源码编译安装(超详细版!!!),学习,数据库,postgresql,linux

这六个文件分别是 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 是一个非常实用的工具。

Linux 上安装PostgreSQL-源码编译安装(超详细版!!!),学习,数据库,postgresql,linux

错误提示:

“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 上安装PostgreSQL-源码编译安装(超详细版!!!),学习,数据库,postgresql,linux

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

四.安装所需的依赖包

#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

Linux 上安装PostgreSQL-源码编译安装(超详细版!!!),学习,数据库,postgresql,linux

Linux 上安装PostgreSQL-源码编译安装(超详细版!!!),学习,数据库,postgresql,linux

依赖包说明如下:

序号 依赖包名称 说明
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=#
 文章来源地址https://www.toymoban.com/news/detail-818170.html

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

到了这里,关于Linux 上安装PostgreSQL-源码编译安装(超详细版!!!)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 在Centos系统源码安装postgreSQL数据库及postGIS扩展

    安装前 PostGIS扩展通常需要安装一些依赖项。 1.GDAL: PostGIS需要GDAL(Geospatial Data Abstraction Library)来处理地理空间数据格式。 2.GEOS: GEOS(Geometry Engine - Open Source)是一个用于处理地理空间数据的C++库。 3.Proj: Proj是用于地图投影的库。 postgreSQL与postGIS插件的版本支持关系 版本对

    2024年04月27日
    浏览(61)
  • 【PostgreSQL内核学习(一)—— Ubuntu源码安装PostgreSQL】

    下载地址:https://www.postgresql.org/ftp/source/v10.1/ 执行命令: 解压成功后显示: 出现问题: 解决方法:执行以下命令。 执行命令: 注意:如果希望后续在gdb时可以查看代码,则需要添加–enable-debug make时出现错误: 解决方法:找到 copy_fetch.c 文件。 文件路径如下: /home/jia/pg

    2024年02月16日
    浏览(58)
  • Linux 编译CEF源码详细记录

    Linux CEF(Chromium Embedded Framework)源码下载编译 由于CEF默认的二进制分发包不支持音视频播放,需要自行编译源码,将ffmpeg开关打开才能支持。这里介绍的是Linux平台下的CEF源码下载编译过程。 Windows平台参考: 《Windows 编译CEF源码详细记录》 下载的过程非常艰辛,因为硬性要

    2024年02月13日
    浏览(49)
  • Linux下PostgreSQL-12.0安装部署详细步骤

    一、安装环境 postgresql-12.0 CentOS-7.6 注意:确认linux系统可以正常连接网络,因为在后面需要添加依赖包。 二、pg数据库安装包下载 下载地址:PostgreSQL: File Browser 选择要安装的版本进行下载: 三、安装依赖包 在要安装postgresql数据库的Linux服务器上执行以下命令安装所需要的依

    2024年04月13日
    浏览(44)
  • 【安装】grpc源码编译安装(Linux)

    修改构建套件的CMake Tool为新建的CMake 选择grpc源码目录中的CMakeLists.txt(grpc/CMakeLists.txt) 初始打开,会弹出窗,设置cmake编译的构建目录;(构建产生的构建文件都会生成在该目录下) 初始打开,设置构建目录后,会弹出窗设置CMake参数; 点击CMake,执行CMake;(最终会生成

    2024年04月27日
    浏览(48)
  • Linux centos7 在线及离线安装postgresql12 详细教程

    目录 一、在线安装 1、配置yum源 2、安装PostgreSQL 3、初始化PostgreSQL 4、启动PostgreSQL服务 5、修改密码 6、配置远程访问 7、关闭防火墙 8、全关完后,navicat测试 二、离线安装 1、官网找到对应的版本,下好包上传到内网的机器上 2、安装PostgreSQL 3、修改路径 4、初始化PostgreSQL 5、

    2024年02月08日
    浏览(61)
  • sshd源码编译安装及报错处理超详细

    最近笔者参加考试遇到需要源码安装sshd,在配置服务时整理了下文与源码包安装sshd的过程: 本文使用的操作系统为kylin server ky10版 首先需要下载OpenSSH的源码包,可以在OpenSSH官网上下载最新版本的源码,这里使用阿里源下载: 找到自己所需版本。 解压源码包: 其中,将“

    2024年02月09日
    浏览(43)
  • linux编译源码,安装valgrind

    目录 1 下载源码 2 在虚拟机上解压 3 进入解压的目录,执行make 4 安装 5 检查安装是否成功 本文参考了内存检查工具valgrind介绍、安装与使用-CSDN博客 我到Valgrind: Current Releases 下载了valgrind 3.22.0源码 我使用的虚拟机是银河麒麟

    2024年01月22日
    浏览(49)
  • Linux CEF(Chromium Embedded Framework)源码下载编译详细记录

    Linux CEF(Chromium Embedded Framework)源码下载编译 由于CEF默认的二进制分发包不支持音视频播放,需要自行编译源码,将ffmpeg开关打开才能支持。这里介绍的是Linux平台下的CEF源码下载编译过程。 Windows平台参考: 《Windows 编译CEF源码详细记录》 下载的过程非常艰辛,因为硬性要

    2024年02月14日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包