postgres V16.3源码安装

二 postgres V16.3源码安装

1 安装centos-7

​ 配置 :1GB内存 1处理器/1核心数量 20GB硬盘

​ 如果已经安装过PostgreSQL的其他版本,需要删除原有的PostgreSQL,操作流程如下:

# (1)查看原有PostgreSQL的状态
systemctl list-units | grep postgresql
service postgresql-<version> status
# (2)将原有的PostgreSQL服务停止
service postgresql-<version> stop
# (3)卸载所有的PostgreSQL(注意输入“y”即可)
yum remove postgresql*
# (4)验证PosgreSQL是否被删除
rpm -qa | grep postgresql

2 下载源码

​ 使用yum安装wget,再使用wget来下载postgres的V16.3的源码。

​ 源码地址:

https://www.postgresql.org/ftp/source/

# 下载源码
yum -y install wget
wget https://ftp.postgresql.org/pub/source/v16.3/postgresql-16.3.tar.gz --no-check-certificate

3 解压源码

tar -zxvf postgresql-16.3.tar.gz
cd postgresql-16.3

4 安装

​ 进入源码解压后的目录,进行安装。

4.1 编译和安装

​ 下载完成压缩包后进行解压,然后进入解压后的目录进行编译和安装。

​ 因为编译时没有使用 ./configure --prefix=/data/pgsql 的prefix来指定编译后的目录,因此默认在/usr/local/pgsql目录下。

# 解压源代码压缩文件
tar -zxvf postgresql-16.3.tar.gz
# 编译
./configure
或者
./configure --without-icu

​ 在执行./configure命令的过程中出现错误。如下面所示。

configure: error: ICU library not found
------
configure: error: readline library not found
------
configure: error: zlib library not found

​ 表示这三个依赖未被发现,可以使用–without -readline来解决,但是还是建议进行安装依赖,使用yum命令来进行安装。

依赖包说明如下:

序号依赖包名称说明
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的扩展或自定义安装中可能会用到。
sudo yum install libicu-devel
-------
yum install -y readline-devel
-------
yum install zlib-devel

​ 安装完成之后再次执行./configure命令。

​ 表2-1 configure选项表

选项描述
–prefix=prefix安装到prefix指向的目录;默认为 /usr/local/pgsql
–bindir=dir安装应用程序到dir;默认为prefix/bin
–with-docdir=dir安装文档到dir;默认为prefix/doc
-with-pgport=port设置默认的服务器端网络链接勿复TCP端口号
–with-tcl为服务端提供Tcl存储过程支持
–with-perl为服务端提供Perl存储过程支持
–with-python为服务端提供Python存储过程支持
–enable-debug启用编译时的调试标志,生成包含调试信息的二进制文件,方便调试
–enable-cassert启用编译时的断言检查,有助于检测运行时错误
–enable-nls启用本机语言支持 (NLS),即以除英语以外的语言显示程序消息的能力。
–with-openssl使用OpenSSL库为PostgreSQL提供加密支持,包括SSL连接等功能
–with-libxml为PostgreSQL提供XML支持,包括XML解析和函数
–with-uuid=e2fs使用e2fsprogs的UUID库(或其他库,如ossp-uuid)
–with-zlib使用zlib库进行数据压缩支持
–with-ldap添加LDAP身份验证支持
–with-ossp-uuid使用OSSP UUID库
–with-systemd配置PostgreSQL支持systemd服务管理器
–with-krb5添加Kerberos身份验证支持
–with-geos为PostGIS地理信息系统扩展提供GEOS库支持
–with-bonjour添加Bonjour服务发现支持
–without-readline不使用Readline库支持交互式终端输入编辑功能
–with-includes=dir指定额外的头文件搜索路径
–with-libraries=dir指定额外的库文件搜索路径
–with-zstd使用 Zstandard 压缩支持进行构建。
–datadir=dir数据文件目录,默认为prefix/share/postgresql
–sysconfdir=dir配置文件目录,默认为prefix/etc/postgresql
–sharedir=dir共享文件目录,默认为prefix/share/postgresql
–docdir=dir文档目录,不同于–with-docdir,用于HTML、man手册等文档
–enable-nls启用本地化支持,提供多语言翻译
–disable-rpath禁止在可执行文件中嵌入库路径
–enable-thread-safety启用线程安全构建(默认开启)
–with-extra-version=version在PostgreSQL版本信息中添加附加版本字符串
–mandir=dir手册页目录。默认值为 *DATAROOTDIR*/man
–docdir=dir安装文档文件的根目录。默认值为 *DATAROOTDIR*/doc/postgresql
–htmldir=dirHTML 格式文档的目录。默认值为 *DATAROOTDIR*
–without-icu在不使用 ICU 库支持的情况下构建,禁用 ICU 整理功能的使用
–without-readline防止使用 Readline 库(以及 libedit)。
–without-zlib防止使用 Zlib 库。
–disable-spinlocks即使 PostgreSQL 没有针对该平台的 CPU 自旋锁支持,也允许构建成功。
–disable-atomics禁用使用 CPU 原子操作。
–disable-thread-safety禁用客户端库的线程安全性。

​ 这些选项可以根据实际需求配置PostgreSQL的功能和安装路径,但并非所有选项都在所有平台上都适用,具体的选项和支持情况需参照PostgreSQL官方文档或实际运行./configure --help命令获取最新的和完整的配置选项列表。

​ configure`之后进行编译和安装。

​ 按官方文档要求,使用make命令时,其版本要在gmake v3.8以上,目前绝大多数Linux发行版本都满足要求,所以一般在Linux环境下不需要检测make版本,但如果是在其他非Linux的UNIX平台上,建议先检测make的版本,检测命令如下。

# 在其他UNIX平台上,可能存在非GNU的make,此时GNU的make的名称会是“gmake”。
osdba@osdba-laptop:~$ make --version
GNU Make 3.81
Copyright (C) 2006 Free Software Foundation, Inc.

​ 在postgres的解压目录执行make或者make all命令,等待编译完成。

# 编译
make
# 安装
make install

​ 到此安装结束,在/usr/local/pgsql目录下可以查看安装的文件。

4.2 创建用户和数据库目录

​ 新增postgres用户,并且创建/usr/local/pgsql/data目录来存放数据库文件,并且给与postgres操作权限。

# 新增用户postgres
adduser postgres
或
sudo useradd postgres

​ 对于新增的用户,建议是设置一个密码,并且可以适当的给予新用户root权限或者sudo权限。

# 设置postgres的密码
sudo passwd postgres
# 系统将提示你输入密码,输入后按Enter键确认,再次输入以确认密码

# 若要赋予该用户sudo权限(可选,取决于你希望osdba用户是否具有管理员权限)
sudo usermod -aG wheel osdba  # 对于使用wheel组的系统
sudo usermod -aG sudo osdba   # 对于使用sudo组的系统

# 确认用户和组信息已生效
id osdba

​ 建立新用户之后可以数据库目录的创建。对于这个目录你也可以修改一下目录的权限,这是为了出于安全考虑。

# 创建pg数据库数据存放目录
mkdir /usr/local/pgsql/data

# 给予权限
chown postgres /usr/local/pgsql/data
4.3 新增环境变量

​ PostgreSQL安装完成后,需要设置可执行文件的路径:

export PATH=/usr/local/pgsql/bin:$PATH

​ 然后设置共享库的路径:

export LD_LIBRARY_PATH=/usr/local/pgsql/lib

​ 设置数据库的数据目录的路径:

export PGDATA=/usr/local/pgsql/data

​ 如果想让以上设置的配置对所有的用户生效,可以把以上内容添加到/etc/profile文件中,/etc/profile中的内容类似如下内容:

# 在root用户下
vi /etc/profile

# 追加内容
...
...
...
if [ -d /etc/profile.d ]; then
	for i in /etc/profile.d/*.sh; do
		if [ -r $i ]; then
			. $i
		fi
	done
	unset i
fi

export PATH=/usr/local/pgsql/bin:$PATH
export PGDATA=/usr/local/pgsql/data
export LD_LIBRARY_PATH=/usr/local/pgsql/lib:$LD_LIBRARY_PATH

对某个指定用户生效也可以,如对新增的postgres用户的环境变量进行新增操作。

#此时需修改postgres用户环境变量
vi /home/postgres/.bash_profile

#添加以下几行,/usr/local/pgsql为编译时指定的安装目录
export PGHOME=/usr/local/pgsql
export PGDATA=/usr/local/pgsql/data
PATH=$PATH:$HOME/bin:$PGHOME/bin

# 让配置的环境变量生效
source .bash_profile
4.4 安装contrib目录下的工具

contrib下有一些工具比较实用,一般用户都会安装这些工具,其安装的方法也与Linux下的编译过程相同,安装命令如下:

# 进入解压后的源码目录下的、contrib
cd postgresql-16.3/contrib
make
sudo make install
4.5 数据库初始化

​ 切换到创建的postgres用户下,输入密码登录。

# 如果配置好了环境变量
initdb
# 如果没有配置好
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data

​ 至此,数据库实例的创建就完成了。

initdb [选项...] [ --pgdata | -D ] 目录
参数描述
-A authmethod –auth=authmethod此选项指定在 pg_hba.confhostlocal 行)中使用的本地用户的默认身份验证方法。有关有效值的概述。
initdb 将使用指定的非复制身份验证方法以及复制连接为 pg_hba.conf 条目预填充。
除非您信任系统上的所有本地用户,否则请勿使用 trusttrust 是为了便于安装而设置的默认值。
–auth-host=authmethod此选项指定在 pg_hba.confhost 行)中使用的 TCP/IP 连接通过本地用户的身份验证方法。
–auth-local=authmethod此选项指定在 pg_hba.conflocal 行)中使用的 Unix 域套接字连接通过本地用户的身份验证方法。
-D directory –pgdata=directory此选项指定应存储数据库集群的目录。这是 initdb 唯一需要的信息,但您可以通过设置 PGDATA 环境变量来避免写入它,这很方便,因为数据库服务器(postgres)稍后可以通过同一变量找到数据目录。
-E encoding –encoding=encoding选择模板数据库的编码。除非您稍后覆盖它,否则它也将是您稍后创建的任何数据库的默认编码。
默认情况下,模板数据库编码从区域设置派生。如果指定了 --no-locale(或等效地,如果区域设置是 CPOSIX),则 ICU 提供程序的默认值为 UTF8,而 libc 提供程序的默认值为 SQL_ASCII
-g –allow-group-access允许与集群所有者同组的用户读取 initdb 创建的所有集群文件。此选项在 Windows 上被忽略,因为它不支持 POSIX 样式的组权限。
–icu-locale=locale当使用 ICU 提供程序时,指定 ICU 区域设置。
–icu-rules=rules指定其他排序规则以自定义默认排序的行为。仅支持 ICU。
-k –data-checksums对数据页使用校验和以帮助检测 I/O 系统的损坏,否则这些损坏将是静默的。启用校验和可能会产生明显的性能损失。如果设置,则会计算所有数据库中所有对象的校验和。所有校验和失败都将在 pg_stat_database 视图中报告。
–locale=locale设置数据库集群的默认区域设置。如果未指定此选项,则区域设置将从 initdb 运行的环境中继承。
–lc-collate=语言环境
–lc-ctype=语言环境
–lc-messages=语言环境
–lc-monetary=语言环境
–lc-numeric=语言环境
–lc-time=语言环境
--locale 类似,但仅设置指定类别中的语言环境。
–no-locale等效于 --locale=C
–locale-provider={`libc|icu}此选项为在新建集群中创建的数据库设置语言环境提供程序。当随后创建新数据库时,可以在 CREATE DATABASE 命令中覆盖该设置。默认值为 libc
-N –no-sync默认情况下,initdb 将等待所有文件安全写入磁盘。此选项会导致 initdb 在不等待的情况下返回,速度更快,但意味着随后的操作系统崩溃可能会损坏数据目录。通常,此选项对于测试很有用,但创建生产安装时不应使用。
–no-instructions默认情况下,initdb 将在其输出的末尾编写有关如何启动集群的说明。此选项会导致省略这些说明。这主要用于将 initdb 封装在特定于平台的行为中的工具,其中这些说明可能不正确。
–pwfile=文件名使 initdb 从文件中读取引导超级用户的密码。该文件的首行将作为密码。
-S –sync-only安全地将所有数据库文件写入磁盘并退出。此操作不会执行任何正常的 initdb 操作。通常,此选项对于在将 fsync 从 off 更改为 on 后确保可靠恢复非常有用。
-T config –text-search-config=config设置默认文本搜索配置。
-U username –username=username设置 引导超级用户 的用户名。
-W –pwprompt使 initdb 提示输入密码以提供给引导超级用户。
-X directory –waldir=directory此选项指定应存储预写日志的目录。
–wal-segsize=size设置 WAL 段大小,单位为兆字节。这是 WAL 日志中每个单独文件的大小。默认大小为 16 兆字节。该值必须是 1 到 1024(兆字节)之间的 2 的幂。此选项只能在初始化期间设置,且以后无法更改。
调整此大小以控制 WAL 日志传输或归档的粒度可能很有用。此外,在 WAL 量很大的数据库中,每个目录的 WAL 文件数量可能会成为性能和管理问题。增加 WAL 文件大小将减少 WAL 文件的数量。
-c name=value –set name=valueinitdb 期间强制将服务器参数 name 设置为 value,并将该设置安装到生成的 postgresql.conf 文件中,以便在将来的服务器运行期间应用该设置。可以多次指定此选项以设置多个参数。当环境导致服务器根本无法使用默认参数启动时,此选项特别有用。
-d –debug打印引导后端的调试输出以及一些对普通用户来说不太重要的其他消息。
–discard-caches使用 debug_discard_caches=1 选项运行引导后端。这需要很长时间,并且仅用于深度调试。
4.6 数据库启动

​ 启动数据库的命令为:

pg_ctl start -D $PGDATA

​ 停止数据库的命令如下:

pg_ctl stop -D $PGDATA [-m SHUTDOWN-MODE]

​ 其中 -m 用于指定数据库的停止方法,有以下3种模式:

  • smart:等所有连接中止后,关闭数据库。如果客户端连接不终止,则无法关闭数据库。
  • fast:快速关闭数据库,断开客户端的连接,让已有的事务回滚,然后正常关闭数据库。相当于Oracle数据库关闭时的immediate模式。
  • immediate:立即关闭数据库,相当于数据库进程立即停止,直接退出,下次启动数据库需要进行恢复。相当于Oracle数据库关闭时的abort模式。

​ 较常用的关闭数据库的方法是fast模式,因为如果采用smart模式,有用户连接到数据库时,系统会一直等待,而无法关闭数据库。PostgreSQL9.5之前的版本默认是smart模式,通常要使用命令“pg_ctl stop -m fast”来关闭数据库,在PostgreSQL9.5以上的版本中可以直接用“pg_ctl stop”命令来关闭数据库。4.7 设置数据库密码

​ PostgreSQL的默认用户名通常是postgres,但并没有默认密码。在首次安装PostgreSQL时,系统不会自动生成一个默认密码,而是需要你在安装后手动设置。

​ 很多Linux发行版中,安装完成后,作为超级用户(如root)可以通过以下步骤为postgres用户设置密码:

sudo -u postgres psql -d postgres
# 进入psql命令行后,可以执行以下命令设置密码
ALTER USER osdba WITH PASSWORD 'your_password';
\q

​ 在设置完密码后,强烈建议对默认用户进行如下操作:

  1. 更改默认用户的密码,以增加安全性。
  2. 根据实际需要创建新的数据库用户,并赋予合适的权限,而非直接使用postgres用户进行日常操作。
  3. 对数据库实例采取必要的安全措施,比如禁用不需要的协议,启用SSL连接,以及合理配置防火墙规则,限制对PostgreSQL服务的访问仅限于授权的IP地址或网络。

​ 总之,在安装PostgreSQL并完成初步配置后,确实应当更改默认用户的密码,并根据实际情况进行更细致的安全配置。

​ 以下是一些 psql 常见的命令行参数及其描述:

命令(参数)描述
-h HOSTNAME--host=HOSTNAME指定要连接到的数据库服务器主机名或IP地址。默认情况下,psql 会尝试连接到本地主机。
-p PORT--port=PORT指定数据库服务器监听的端口号,默认为 5432。
-U USERNAME--username=USERNAME指定要使用的数据库用户名。默认情况下,psql 会尝试使用当前操作系统的用户名。
-d DATABASE--dbname=DATABASE指定要连接的数据库名称。如果不指定,将连接到用户的默认数据库。
-w--no-password不提示输入密码。如果服务器需要密码认证且环境变量 PGPASSWORD 未设置,则连接尝试可能会失败。
-W--password强制 psql 提示输入密码,无论服务器是否需要密码认证。
-c COMMAND--command=COMMAND执行单条SQL命令后退出。例如:psql -c "SELECT * FROM mytable;"
-f FILE--file=FILE执行指定文件中的SQL命令集后退出。
-l--list列出服务器上所有可用的数据库。
-v VARNAME=value--set=VARNAME=value设置一个变量,可以在SQL脚本中引用。
\?\\?psql 交互模式中查看帮助,列出元命令列表。
-E--echo-queries显示发送到服务器的SQL命令。
-a--single-transaction在执行SQL脚本时,以单个事务的方式执行所有命令。

​ 请注意,\?-E 是在 psql 交互式会话中使用的元命令,而不是命令行参数。不过,这里为了完整性也一并列出。在实际使用中,可以根据需要组合使用这些参数。

4.8 数据库配置的修改

​ 进入/usr/local/pgsql/data目录(即数据库数据存放目录),编辑其中的postgresql.conf文件。

cd /usr/local/pgsql/data

vi postgresql.conf

​ 其中,参数“listen_addresses”表示监听的IP地址,默认是在“localhost”处监听,也就是在IP地址“127.0.0.1”上监听,这会造成远程主机无法登录该数据库,如果想从其他机器上登录该数据库,需要把监听地址改成实际网络的地址,一种简单的方法是把地址改成“*”,表示在本地的所有地址上监听

#------------------------------------------------------------------------------
# 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)

​ 参数“port”表示监听的数据库端口,默认为“5432”,可以使用默认设置。如果一台机器上安装了多个数据库实例(如安装了多个不同版本的PostgreSQL),可以设置为不同的端口。
对于这两个参数的修改,需要重启数据库才能生效。

​ 在修改pg_hba.conf文件,让数据库可以远程访问。

vi pg_hba.conf

​ 样式:

# IPv4 local connections:
host    all             all             0.0.0.0/0               trust
host    all             all             127.0.0.1/32            trust

​ 启动postgres服务。

service postgresql start

​ 数据库日志相关参数还是在 postgresql.conf ,下面来看看与日志相关的几个参数:日志的收集一般是需要打开的,所以需要进行如下设置:

logging_collector = on
log_directory = 'log'                   # directory where log files are written,
                                        # can be absolute or relative to PGDATA

​ 日志切换和是否覆盖一般可以使用如下几种不同的方案。

方案一:每天生成一个新的日志文件

log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_truncate_on_rotation = off
log_rotation_age = 1d
log_rotation_size = 0

方案二:每当日志写满一定的大小(如10MB),则切换一个日志

log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_truncate_on_rotation = off
log_rotation_age = 0
log_rotation_size = 10M

方案三:只保留最近7天的日志,进行循环覆盖

log_filename = 'postgresql-%a.log'
log_truncate_on_rotation = on
log_rotation_age = 1d
log_rotation_size = 0

log_filename 中的 % 符号及其后面的字母组合是用来格式化日志文件名中的日期和时间部分的。下面是常用的时间日期格式符号以及它们对应的含义:

符号含义
%Y四位数的年份
%m两位数的月份(01-12)
%d两位数的日期(01-31)
%H两位数的小时(00-23)
%M两位数的分钟(00-59)
%S两位数的秒(00-59)
%a缩写的星期几名字(Sun-Sat)

​ 内存参数的设置

​ PostgreSQL安装完毕后,可以修改以下主要内存参数。

  • shared_buffers:共享内存的大小,主要用于共享数据块。
  • work_mem:单个SQL执行时,以及排序、Hash Join时使用的内存,SQL运行完毕后,该内存就会被释放。
  • shared_buffers的默认值为32MB,如果你的机器上有足够的内存,可以把这个参数设置得大一些,如可以设置为物理内存大小的四分之一,这样数据库就可以缓存更多数据块,当读取数据时,就可以从共享内存中进行读取,而不需要再从文件上去读。而work_mem设置大一些,会使排序操作效率更高。

5 本地连接测试

​ 切换到postgres用户,执行psql命令,也可以使用pg_ctl status来判断。更改完以上配置后,重启数据库。

# 切换到postgres用户
su postgres
# 重启数据库
pg_ctl restart
# 查看数据库运行的状态
pg_ctl status
# 进入数据库
psql
# 展示
psql (16.3)
Type "help" for help.

postgres=# List of databases
postgres-# \l
                                                       List of databases
   Name    |  Owner   | Encoding | Locale Provider |   Collate   |    Ctype    | ICU Locale | ICU Rules |   Access privileges   
-----------+----------+----------+-----------------+-------------+-------------+------------+-----------+-----------------------
 mydb      | postgres | UTF8     | libc            | zh_CN.UTF-8 | zh_CN.UTF-8 |            |           | 
 postgres  | postgres | UTF8     | libc            | zh_CN.UTF-8 | zh_CN.UTF-8 |            |           | 
 template0 | postgres | UTF8     | libc            | zh_CN.UTF-8 | zh_CN.UTF-8 |            |           | =c/postgres          +
           |          |          |                 |             |             |            |           | postgres=CTc/postgres
 template1 | postgres | UTF8     | libc            | zh_CN.UTF-8 | zh_CN.UTF-8 |            |           | =c/postgres          +
           |          |          |                 |             |             |            |           | postgres=CTc/postgres
(4 rows)

6 远程连接测试

​ 使用datagrip工具进行连接。

7 设置开启自启

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

su root
cd /soft/pg/postgresql-16.3/contrib/start-scripts
ls
# 展示如下
freebsd  linux  macos

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

chmod a+x linux

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

cp linux /etc/init.d/postgresql

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

vi /etc/init.d/postgresql
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服务开机自启动

chkconfig --add postgresql
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

8 设置防火墙

​ 安装依赖包。切换到root用户。

yum -y install firewalld

​ 设置防火墙。

systemctl start firewalld
systemctl enable firewalld
systemctl status firewalld

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

firewall-cmd --permanent --zone=public --add-service=postgresql
# 展示
success
firewall-cmd --reload
# 展示
success

​ 查看端口是否开放。

/sbin/iptables -L -n
# 展示
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

9 启动数据库服务

​ 启动PostgreSQL服务。

service postgresql start
# 展示
Starting PostgreSQL: ok

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

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
# 查看端口
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

​ netstat可能提示命令不存在,可以使用yum安装依稀

yum -y install net-tools
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值