• postgre 12.11单实例安装文档


    下载

    访问https://www.postgresql.org/download/,点击左侧的‘source'进行下载,一般选择bz2的安装包

    二 安装

    这里安装12.11版本的postgre,数据目录路径为/data/server/pgdata,端口为5432.

    2.1 安装依赖

    #安装

    yum install -y zlib-devel readline-devel perl-ExtUtils-Embed python python-devel gcc bison flex

    #检查哪些软件包没装上(若没结果输出,说明全部安装上了)

    rpm -q zlib-devel readline-devel perl-ExtUtils-Embed python python-devel gcc bison flex | grep 'not installed'

    2.2 安装PostgreSQL

    cd /usr/local

    tar -xvf postgresql-12.11.tar.bz2

    cd postgresql-12.11

    ./configure --prefix=/usr/local/pgsql12.11 --enable-thread-safety --with-perl --with-python

    /*

    假如报错:

    checking how to link an embedded Python application... configure: error: could not find shared library for Python

    检查下是否安装了多个python,指定PYTHON=正确位置

    若还是不行,则加上--without-python:

    ./configure --prefix=/usr/local/pgsql12.11 --enable-thread-safety --with-perl --without-python

    */

    make

    make install

    ln -s /usr/local/pgsql12.11 /usr/local/pgsql  

    #安装contrib下的工具

    cd contrib

    make

    make install

    2.3 修改环境变量

    vi /etc/profile

    在最后添加:

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

    export LD_LIBRARY_PATH=/usr/local/pgsql/lib:$LD_LIBRARY_PATH

    PGDATA=/data/server/pgdata

    #让设置生效

    source /etc/profile

    2.4 初始化数据库

    mkdir -p /data/server

    cd /data/server

    mkdir pgdata

    #新建普通用户,初始化数据库

    useradd postgres

    passwd postgres

    cd /data/server

    chown -R postgres:postgres pgdata

    su - postgres

    export PGDATA=/data/server/pgdata

    initdb

    cd /data/server/pgdata

    mkdir arch

    mkdir log

    2.5 修改参数文件

    2.5.1 修改postgresql.conf

    cd /data/server/pgdata

    vi postgresql.conf,新增如下内容:

    port=5432

    listen_addresses='*'

    archive_mode=on

    archive_command = 'test ! -f /data/server/pgdata/arch/%f && cp %p /data/server/pgdata/arch/%f'

    log_destination='stderr'

    logging_collector=on

    log_directory='log'

    log_filename='postgresql-%a.log'

    修改:

    max_connections = 1000

    2.5.2 修改pg_hba.conf文件

    默认只有本地可以连数据库,远程连接会报错:

    psql: FATAL:  no pg_hba.conf entry for host "192.168.1.203", user "postgres", database "postgres", SSL off

    如果想让别的服务器能够远程连接,需要修改gp_hba.conf文件:

    vi pg_hba.conf

    添加如下一行内容,以允许所有服务器连接

    host all all 0.0.0.0/0 md5

    2.6 启动数据库

    pg_ctl -D /data/server/pgdata start

    2.7 登录数据库测试

    2.7.1 本地测试

    psql -p 端口

    2.7.2 navicat连接工具远程连接测试

    报错:

    pg日志里显示:

    DETAIL:  User "postgres" has no password assigned

    解决办法:进数据库里为该用户设置密码:

    ALTER USER postgres PASSWORD '设为和该操作系统用户一样的密码';

    2.8 设置开机自启动

    如果是CentOS 6,则选择用2.8.1这种方式,如果是CentOS 7,则选择用2.8.2这种方式.

    2.8.1 CentOS 6版本的配置成用service方式启动

    2.8.1.1 新建/etc/init.d/postgresql文件

    用root用户执行:

    cp /usr/local/postgresql-12.11/contrib/start-scripts/linux /etc/init.d/postgresql

    chmod +x /etc/init.d/postgresql

    chown postgres:postgres /etc/init.d/postgresql

    vi /etc/init.d/postgresql,注意修改这两个地方:

    prefix=/usr/local/pgsql

    PGDATA="/data/server/pgdata"

    2.8.1.2 验证用service方式启停数据库

    #先关闭之前启动的数据库

    usr/local/pgsql/bin/pg_ctl stop -D /data/server/pgdata

    #验证用service方式启停数据库

    #启库命令

    service postgresql start

    #关库命令

    service postgresql stop

    --备注:

    需要用root用户执行service命令启停数据库,该启动脚本里会自动切换到postgres用户

    2.8.1.3 设置开机自启动

    chkconfig --add postgresql

    2.8.2 CentOS 7版本的配置成用systemctl方式启动

    2.8.2.1 新建service文件

    cd /etc/systemd/system

    vi postgresql.service,新增如下内容:

    [Unit]

    Description=PostgreSQL database server

    Documentation=man:postgres(1)

    Documentation=http://www.postgresql.org/docs/12/static/

    After=network.target

    [Service]

    Type=forking

    User=postgres

    ExecStart=/usr/local/pgsql/bin/pg_ctl start -D /data/server/pgdata

    ExecStop=/usr/local/pgsql/bin/pg_ctl stop -D /data/server/pgdata

    ExecReload=/usr/local/pgsql/bin/pg_ctl reload -D /data/server/pgdata

    TimeoutSec=300

    Restart=on-failure

    [Install]

    WantedBy=multi-user.target

    2.8.2.2 加载服务

    systemctl daemon-reload

    2.8.2.3 验证用systemctl方式启动

    #先关闭之前启动的数据库

    usr/local/pgsql/bin/pg_ctl stop -D /data/server/pgdata

    #验证用systemctl方式启停数据库

    #启库命令

    systemctl start postgresql

    #关库命令

    systemctl stop postgresql

    2.8.2.4 设置开机自启动

    systemctl enable postgresql

  • 相关阅读:
    虚数是什么
    【题解】P6042 「ACOI2020」学园祭
    【ffmpeg】YUV实践
    基于紫光同创FPGA的图像采集及AI加速
    Sringcloud:一、微服务介绍+常用技术框架和技术对比+服务拆分demo
    IDEA稀奇古怪问题的解决方案
    基于FPGA的正弦PWM产生系统verilog实现
    [LeetCode周赛复盘] 第 112场双周赛20230903
    [ros2实操]1-ros2的安装(ubuntu1804)与运行
    【Android】华为市场上线pepk.jar使用
  • 原文地址:https://blog.csdn.net/YABIGNSHI/article/details/132711993