一、安装包获取方式
1、源码(生产库建议源码安装)
https://www.postgresql.org/ftp/source/
2、rpm
https://www.postgresql.org/download/linux/redhat/
3、二进制
https://www.enterprisedb.com/download-postgresql-binaries
二、安装部署
(一)本篇文章主要介绍源码安装,源码的安装一般由3个步骤组成:
配置(configure)
编译(make)
安装(make install)
(二)具体安装步骤如下:
1、安装依赖包
[root@localhost postgresql-14.12]#yum install -y cmake make gcc zlib zlib-devel gcc-c++ perl readline readline-devel python36 tcl openssl ncurses-devel openldap pam flex
2、创建专用用户
[root@localhost ]# useradd pgsql
[root@localhost ]# echo “test” | passwd —stdin pgsql
3、创建目录
[root@localhost ]# mkdir -p /postgresql/{pgdata,archive,scripts,backup,pg14,soft}
4、下载源码安装包并上传至/postgresql/soft目录下
本文以pg14.12为例
5、赋予权限
[root@localhost ]# chown -R pgsql:pgsql /postgresql
[root@localhost ]# chmod -R 775 /postgresql
6、切换至普通用户,解压安装包
[root@localhost soft]# su - pgsql
[pgsql@localhost soft]$ tar -xvf /postgresql/soft/postgresql-14.12.tar.gz
[pgsql@localhost postgresql-14.12]$ cd /postgresql/soft/postgresql-14.12
7、认识源码目录(*)
-rw-r—r—. 1 pgsql pgsql 445 May 7 04:24 aclocal.m4
drwxrwxrwx. 2 pgsql pgsql 4096 May 7 04:38 config
-rwxr-xr-x. 1 pgsql pgsql 595030 May 7 04:24 configure 源码安装的配置脚本
-rw-r—r—. 1 pgsql pgsql 86732 May 7 04:24 configure.ac
drwxrwxrwx. 58 pgsql pgsql 4096 May 7 04:38 contrib 已打包到PG源码中的第三方贡献的插件源码
-rw-r—r—. 1 pgsql pgsql 1192 May 7 04:24 COPYRIGHT
drwxrwxrwx. 3 pgsql pgsql 87 May 7 04:38 doc 文档
-rw-r—r—. 1 pgsql pgsql 4279 May 7 04:24 GNUmakefile.in
-rw-r—r—. 1 pgsql pgsql 277 May 7 04:24 HISTORY 版本变更的历史记录
-rw-r—r—. 1 pgsql pgsql 63935 May 7 04:39 INSTALL 安装说明
-rw-r—r—. 1 pgsql pgsql 1665 May 7 04:24 Makefile
-rw-r—r—. 1 pgsql pgsql 1213 May 7 04:24 README
drwxrwxrwx. 16 pgsql pgsql 4096 May 7 04:39 src 源代码
8、编译
[pgsql@localhost postgresql-14.12]$ ./configure —prefix=/postgresql/pg14
[pgsql@localhost postgresql-14.12]$ make world -j 16 && make install-world
9、设置系统环境变量
cat >> ~/.bash_profile <<”EOF”
export PGPORT=5432
export PGDATA=/postgresql/pgdata
export PGHOME=/postgresql/pg14
export LD_LIBRARY_PATH=$PGHOME/lib:$LD_LIBRARY_PATH
export PATH=$PGHOME/bin:$PATH:.
export PGHOST=$PGDATA
export PGUSER=postgres
export PGDATABASE=postgres
EOF
source ~/.bash_profile
10、初始化数据库
[pgsql@localhost postgresql-14.12]$ /postgresql/pg14/bin/initdb -D /postgresql/pgdata -E UTF8 —locale=en_US.utf8 -U postgres
11、修改配置参数
[pgsql@localhost postgresql-14.12]$ cat >> /postgresql/pgdata/postgresql.conf <<”EOF”
listen_addresses = ‘*’
port=5432
unix_socket_directories=’/postgresql/pgdata’
logging_collector = on
log_directory = ‘pg_log’
log_filename = ‘postgresql-%a.log’
log_truncate_on_rotation = on
EOF
[pgsql@localhost postgresql-14.12]$ cat > /postgresql/pgdata/pg_hba.conf << EOF
TYPE DATABASE USER ADDRESS METHOD
host all all 0.0.0.0/0 md5
EOF
12、启动数据库
[pgsql@localhost postgresql-14.12]$ pg_ctl start
13、至此pg14已经安装成功了。下面设置开机服务自启动,切换至root用户。
[root@localhost soft]# cat > /etc/systemd/system/PG14.service <<”EOF”
[Unit]
Description=PostgreSQL database server
Documentation=man:postgres(1)
After=network.target
[Service]
Type=forking
User=pgsql
Group=pgsql
Environment=PGPORT=5432
Environment=PGDATA=/postgresql/pgdata
OOMScoreAdjust=-1000
ExecStart=/postgresql/pg14/bin/pg_ctl start -D ${PGDATA} -s -o “-p ${PGPORT}” -w -t 300
ExecStop=/postgresql/pg14/bin/pg_ctl stop -D ${PGDATA} -s -m fast
ExecReload=/postgresql/pg14/bin/pg_ctl reload -D ${PGDATA} -s
KillMode=mixed
KillSignal=SIGINT
TimeoutSec=0
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable PG14
systemctl start PG14
systemctl status PG14
切回pgsql用户,设置密码
[pgsql@localhost ~]$ psql
psql (14.12)
Type “help” for help.
postgres=# alter user postgres with password ‘test’;
ALTER ROLE
(三)相关环境变量解释
PGHOST 要联接的主机名主机名以斜杠开头。
PGHOSTADDR 与之连接的主机的IP地址。
PGPORT 主机服务器的端口号,或者在 Unix 域套接字联接时的套接字扩展文件名。
PGDATABASE 数据库名
PGUSER 要连接的PostgreSQL用户名。缺省是与运行该应用的用户操作系统名同名的用户。
PGPASSWORD 如果服务器要求口令认证,所用的口令。
PGPASSFILE 指定密码文件的名称用于查找。如果没有设置, 默认为~/.pgpass
PGSERVICE 用于额外参数的服务名。
PGSERVICEFILE 指定连接服务的文件中每个用户的名字, 如果没有设置默认~/.pg_service.conf
PGREALM 设置与PostgreSQL一起使用的 Kerberos 域, 如果该域与本地域不同的话。
PGOPTIONS 添加命令行选项以在运行时发送到服务器。
PGAPPNAME 为application_name配置参数指定一个值。
PGSSLMODE 这个选项决定是否需要和服务器协商一个SSL TCP/IP连接。
PGREQUIRESSL 废弃
PGSSLCOMPRESSION SSL连接进行的数据是否压缩。
PGSSLCERT 这个参数指定客户端SSL认证的文件名。
PGSSLKEY 这个参数指定客户端使用的秘钥的位置。
PGSSLROOTCERT 这个参数声明一个包含SSL认证授权(CA)证书的文件名。
PGSSLCRL 这个参数声明SSL证书撤销列表(CRL)的文件名。
PGREQUIREPEER 这个参数声明服务器的操作系统用户名。
PGKRBSRVNAME 使用GSSAPI认证时使用的Kerberos服务名。
PGGSSLIB 为GSSAPI认证使用的GSS库。只在Windows上使用。
PGCONNECT_TIMEOUT 连接的最大等待时间,以秒计(用十进制整数字串书写)。
PGCLIENTENCODING 为这个连接设置client_encoding配置参数。
PGDATESTYLE 设置缺省的时区。(等效于SET timezone TO …。)
PGTZ 设置缺省的时区。(等效于SET timezone TO …。)
(libpq)PGSYSCONFDIR 设置包含pg_service.conf文件。
(libpq)PGLOCALEDIR 设置包含信息国际化的locale文件目录。