pg12.7
一,安装数据库
--前期配置
--关闭防火墙等
systemctl status firewalld.service
systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl status firewalld.service
echo "SELINUX=disabled" /etc/selinux/config
cat /etc/selinux/config
--ssh快速登录
vim /etc/ssh/sshd_config
UseDNS no
GSSAPIAuthentication no
service sshd restart
/bin/systemctl restart sshd.service
--修改主机名
vim /etc/hostname
db01
vim /etc/hosts
192.168.18.101 db01
--配置yum源
mount -o loop Kylin-Server-V10-SP3-General-Release-2303-X86_64.iso /media
[root@localhost yum.repos.d]# vim kylin.repo
[ks10-local-iso]
name = Kylin Linux Advanced Server 10 - local
baseurl = file:///media
gpgcheck = 1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-kylin
enabled = 1
--yum补充安装包
vim 1.sh
yum install -y gcc* c*
yum install -y zlib-devel* lrzsz*
yum install -y sysbench* openssh*
yum install -y initscripts* net-tools*
yum install -y ncurses* libtermcap-devel*
yum install -y cmake* make*
yum install -y zlib* readline*
yum install -y tcl* openssl*
yum install -y openldap* gcc-c++*
yum install -y openssl-devel* pam*
yum install -y perl
yum install -y python36
yum -y install e2fsprogs-devel uuid uuid-devel libuuid-devel
yum -y install readline readline-devel zlib zlib-devel gettext gettext-devel openssl openssl-devel pam pam-devel libxml2 libxml2-devel libxslt libxslt-devel perl perl-devel tcl-devel uuid-devel gcc gcc-c++ make flex bison perl-ExtUtils*
-- 创建用户
groupadd -g 60001 pg12
useradd -u 60001 -g pg12 pg12
echo "Bdstar1234" | passwd --stdin pg12
-- 创建目录
mkdir -p /data/postgresql/pg12/{pgdata,archive,scripts,backup,pg12,soft,pgdir}
chown -R pg12:pg12 /data/postgresql/pg12
chmod -R 775 /data/postgresql
-- 编译
chown -R pg12:pg12 /data/postgresql/*
su - pg12
cd /data/soft/postgresql-12.7
tar -zxvf postgresql-12.7.tar.gz
cd postgresql-12.7
## 编译 12.7版本需要 --with-uuid=e2fs
cd /data/soft/postgresql-12.7
./configure --prefix=/data/postgresql/pg12/pg12 --without-readline --with-uuid=e2fs --with-openssl
make -j 8 && make install
cd contrib/uuid-ossp/
make && make install
tar -zxvf rlwrap-0.37.tar.gz
./configure
make
make install
================================
--迁移数据库
pg_basebackup -h 127.0.0.1 -U postgres -l bk20240722 -F p -P -R -D /data/postgresql/pg12/pgdir/bak
tar -zcvf bk20240722.tar.gz bak &
#tar -zxvf bk20240722.tar.gz
=============================================
新库配置
-- 配置环境变量
cat >> ~/.bash_profile <<"EOF"
export LANG=en_US.UTF-8
export PS1="[\u@\h \W]\$ "
export PGPORT=15433
export PGDATA=/data/postgresql/pg12/pgdata
export PGHOME=/data/postgresql/pg12/pg12
export LD_LIBRARY_PATH=$PGHOME/lib:/lib64:/usr/lib64:/usr/local/lib64:/lib:/usr/lib:/usr/local/lib:$LD_LIBRARY_PATH
export PATH=$PGHOME/bin:$PATH:.
export DATE=`date +"%Y%m%d%H%M"`
export MANPATH=$PGHOME/share/man:$MANPATH
export PGHOST=$PGDATA
export PGUSER=postgres
export PGDATABASE=postgres
alias psql='rlwrap psql'
EOF
source ~/.bash_profile
-- 初始化
su - pgsql
initdb -D /data/postgresql/pg12/pgdata -E UTF8 --locale=en_US.utf8 -U postgres
-- 修改参数
cat >> /data/postgresql/pg12/pgdata/postgresql.conf <<"EOF"
listen_addresses = '*'
port=15433
unix_socket_directories='/data/postgresql/pg12/pgdata'
logging_collector = on
log_directory = 'pg_log'
log_filename = 'postgresql-%a.log'
log_truncate_on_rotation = on
EOF
cat > /data/postgresql/pg12/pgdata/pg_hba.conf << EOF
# TYPE DATABASE USER ADDRESS METHOD
local all all trust
host all all 127.0.0.1/32 trust
host all all 0.0.0.0/0 md5
host replication all 0.0.0.0/0 md5
EOF
-- 启动
su - pg12
pg_ctl start
pg_ctl status
pg_ctl stop
-- 关闭库,删除库的数据文件,
pg_ctl
rm -rf /data/postgresql/pg12/pgdata/*
mv /data/postgresql/pg12/pgdir/bak/* /data/postgresql/pg12/pgdata/
chown pg12:pg12 /data/postgresql/pg12/pgdata/ -R
--删除备份过来的相关数据
rm -rf postgresql.crt
rm -rf postgresql.csr
rm -rf postgresql.key
rm -rf root.crt
rm -rf root.srl
rm -rf server.crt
rm -rf server.key
rm -rf standby.signal
删除加密软件
vim postgresql.conf
#ssl=on
#ssl_ca_file='root.crt'
#ssl_key_file='server.key'
#ssl_cert_file='server.crt'
vim pg_hba.conf
#host all all all md5
#hostssl all all 0.0.0.0/0 cert
-- 修改参数
cat >> /data/postgresql/pg12/pgdata/postgresql.conf <<"EOF"
listen_addresses = '*'
port=15433
unix_socket_directories='/data/postgresql/pg12/pgdata'
logging_collector = on
log_directory = 'pg_log'
log_filename = 'postgresql-%a.log'
log_truncate_on_rotation = on
EOF
重启
pg_ctl start
===================================================================================================
#https://cloud.tencent.com/developer/article/1977976 (参考)
启用openssl(单向)
1. 查看postgresql是否使用openssl选项编译安装,没有则需重新编译:
[pg12@db01 pgdata]$ pg_config|grep CONFIGURE
CONFIGURE = '--prefix=/data/postgresql/pg12/pg12' '--without-readline' '--with-uuid=e2fs' '--with-openssl'
2. 查看ssl_library的参数值是OpenSSL
postgres=# show ssl_library ;
ssl_library
-------------
OpenSSL
(1 row)
postgres=# select version();
version
-----------------------------------------------------------------------------
PostgreSQL 12.7 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 7.3.0, 64-bit
(1 row)
3. PostgreSQL配置单向SSL认证连接
mkdir /data/postgresql/pg12/pgdata/openssl
openssl req -new -x509 -days 365 -nodes -text -subj '/CN=postgres' -out /data/postgresql/pg12/pgdata/openssl/server.crt -keyout /data/postgresql/pg12/pgdata/openssl/server.key
chmod 600 /data/postgresql/pg12/pgdata/openssl/server.key
4. postgresql.conf配置文件添加
ssl = on
ssl_cert_file = '/data/postgresql/pg12/pgdata/openssl/server.crt'
ssl_key_file = '/data/postgresql/pg12/pgdata/openssl/server.key'
pg_hba.conf配置文件添加
host all all all md5
hostssl all all 0.0.0.0/0 cert
5. 重启,添加配置
[pg12@db01 pgdata]$ pg_ctl restart
报错
waiting for server to start....2024-07-22 08:18:41.358 UTC [1890106] FATAL: could not access file "passwordcheck": No such file or directory
这个扩展已经包含在pgsql源码中,但是默认并未完成,所以需要安装之,进入pgsql源码目录
解决方法:
[pg12@db01 pgdata]$ cd /data/soft/postgresql-12.7/contrib/passwordcheck
[pg12@db01 passwordcheck]$make
[pg12@db01 passwordcheck]$make install
重启成功
[pg12@db01 passwordcheck]$ pg_ctl restart
[pg12@db01 pgdata]$ psql -h localhost -d postgres -U postgres -p 15433
Password for user postgres:
psql (12.7)
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
Type "help" for help.
postgres=# select ssl_is_used();
报错
ERROR: function ssl_is_used() does not exist
LINE 1: select ssl_is_used();
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
这个扩展已经包含在pgsql源码中,需要再次进入pgsql源码目录
[pg12@db01 pgdata]$ cd /data/soft/postgresql-12.7/contrib/sslinfo
[pg12@db01 sslinfo]$ make
[pg12@db01 sslinfo]$ make install
--创建sslinfo
postgres=# create extension sslinfo;
CREATE EXTENSION
postgres=# select ssl_is_used();
ssl_is_used
-------------
t
-- 连接的时候需要加上-h参数,否则不是以ssl连接的
[pg12@db01 sslinfo]$ psql -h localhost -d postgres -U postgres -p 15433
Password for user postgres:
psql (12.7)
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
Type "help" for help.
postgres=# select ssl_is_used();
ssl_is_used
-------------
t
(1 row)
postgres=# select ssl_version();
ssl_version
-------------
TLSv1.3
(1 row)