编译安装Postgresql 10并配置SSL以及.pgpass免密登陆,并设置端口号5666

  • 配置本地Yum
    1.1 配置local.repo

                        [CDROM1]
                        name=CDROM1
                        baseurl=file:///mnt/
                        enable=1
                        gpgcheck=0
                        gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    
        1.2  挂在镜像
                        mount /dev/cdrom   /mnt/
    
        1.3. 更行仓库
                        yum clean all  && yum repolist all
    
        1.4   检查openssl模块是否安装
                        um installed list|grep openssl
  • 2 . 安装 SSL模块

                yum -y install openssl-devel  openssl  readline-devel zlib-devel

    3 . 基础环境

     3.1 软件环境
                            Centos7.6+postgresql-10.14.tar.gz
    
            3.2 磁盘目录 
    
                  /home/pg10/soft     在pg10用户下安装软件目录,权限是pg10:pg10
                 /data01/pg10/data     初始化路径,权限是pg10:pg10

    4 . 安装步骤

            4.1  解压安装包 
            tar -xvf postgresql-10.14.tar.gz
            4.2  进入目录
            cd postgresql-10.14
            4.3 编译,端口号是5666,软件安装路径是/home/pg10/soft
            ./configure  --prefix=/home/pg10/soft  --with-openssl --with-pgport=5666
            下一步
            make world -j4 && make install-world -j4
            4.4 初始化数据库目录到/data01/pg10/data 并启用checksum校验
            /home/pg10/soft/bin/initdb -D /data01/pg10/data  -k
            4.5 启动数据库
            /home/pg10/soft/bin/pg_ctl start -D /data01/pg10/data -l /tmp/logfile
            4.6 创建.pgpass 文件并授权0600的权限
            touch ~/.pgpass
            chmod 0600 ~/.pgpass
            data01:5666:pg10:postgres:1qaz@WSX
            4.7 配置数据库超级用户postgres
            /home/pg10/soft/bin/psql -d postgres
            select current_user;
            select username from pg_user;
    
            4.8 配置环境变量
            vim .bashrc 添加以下内容
                export PGHOME=/home/pg10/soft
                export PGDATA=/data01/pg10/data
                export PATH=${PGHOME}/bin:${PATH}
    
            执行以下内容
            . .bashrc  或者source  .bashrc
    
            4.8 登录数据库  
    
            psql -d postgres
    
            4.9. 创建超级用户
    
            create user postgres with superuser  password ‘1qaz@WSX‘;
    
            4.10   修改端口(./configure中如果没有指定的话 --with-pgport需要进行指定)
    
                        alter system set port=5666;
                        select pg_reload_conf(); 
                        pg_ctl -D $PGDATA reload

    5 . 配置SSL(参考链接文档)
    https://www.postgresql.org/docs/10/ssl-tcp.html

    在家目录下执行以下内容
     openssl req -new -x509 -days 365 -nodes -text -out server.crt   -keyout server.key -subj "/CN=data01"
    
    chmod og-rwx server.key
    
        openssl req -new -nodes -text -out root.csr     -keyout root.key -subj "/CN=data01"
        chmod og-rwx root.key
    
        openssl x509 -req -in root.csr -text -days 3650         -extfile /etc/pki/tls/openssl.cnf -extensions v3_ca             -signkey root.key -out root.crt
    
            openssl req -new -nodes -text -out server.csr             -keyout server.key -subj "/CN=data01"
            chmod og-rwx server.key
    
            openssl x509 -req -in server.csr -text -days 365         -CA root.crt -CAkey root.key -CAcreateserial         -out server.crt
    
            注意Centos7 上ssl的 openssl.cnf跟网站上路径是不一致的,需要进行修改成/etc/pki/tls/openssl.cnf
        生成
            -rw-rw-r-- 1 pg10 pg10   969 Jan  3 21:06 server.crt
            -rw------- 1 pg10 pg10  1704 Jan  3 21:06 server.key
            然后将这两个文件放到/data01/pg10/data路径,这样后续参数就不需要修改路径了。
            如果放在别的路径,例如家目录下,需要修改postgresql.conf
            ssl_key_file=‘/home/pg10/server.key‘
            ssl_cert_file=‘/home/pg10/server.crt‘
    
        5.1   配置ssl支持 并创建sslinfo扩展
                 配置server.key server.crt文件等
                    启动ssl
                    alter system set ssl=on;
                    修改$PGDATA/postgresql.conf
                    ssl=on
                    注意如果cp  server.key  server.crt就不需要再修改以下这两个参数了。默认路径是/data01/pg10/data这个路径了。如果放在了家目录,则需要修改。
                    ssl_key_file=‘/home/pg10/server.key‘
                    ssl_cert_file=‘/home/pg10/server.crt‘
    
                    以下是直接放置到data路径后需要打开的参数
                    #authentication_timeout = 1min          # 1s-600s
                    ssl = on
                    ssl_ciphers = ‘HIGH:MEDIUM:+3DES:!aNULL‘ # allowed SSL ciphers
                    ssl_prefer_server_ciphers = on
                    ssl_ecdh_curve = ‘prime256v1‘
                    ssl_cert_file = ‘server.crt‘
                    ssl_key_file = ‘server.key‘
    
                    配置$PGDATA/pg_hba.conf
                        hostssl    all             all          0.0.0.0/0               md5
    
                        配置完后pg_ctl reload
    
        5.2  登陆检查,并查看
                psql -U postgres -d postgres
    
                        show ssl;
                        show ssl_key_file;
                        show ssl_cert_file;
    
                        create extension sslinfo;
                        然后退出
    
             pg_ctl restart -D $PGDATA -l /tmp/logfile
    
             create extension sslinfo;
    
             select ssl_is_used(); 需要是t

    编译安装Postgresql 10并配置SSL以及.pgpass免密登陆,并设置端口号5666

             5.3 安全机制检查 psql "host=`hostname` user=postgres dbname=postgres password=1qaz@WSX sslmode=require" -c "SELECT ssl_is_used();" 
    
           select ssl_is_used();

    编译安装Postgresql 10并配置SSL以及.pgpass免密登陆,并设置端口号5666

    参考文档

            https://my.oschina.net/tianbing/blog/744826

    编译安装Postgresql 10并配置SSL以及.pgpass免密登陆,并设置端口号5666

    上一篇:Python | Python学习之mysql交互详解


    下一篇:启动mysql 镜像