zoukankan      html  css  js  c++  java
  • 安装postgresql11.5

    root身份安装

    创建用户
    
    编译安装成功后,接下来要做的就是创建一个普通用户,因为默认超级用户(root)不能启动postgresql,所以需要创建一个普通用户来启动数据库,执行以下命令创建用户:
    
    [root@localhost build_dir]# groupadd postgres
    [root@localhost build_dir]# useradd -g postgres postgres
    [root@localhost build_dir]# passwd postgres
    
    接下来设置权限,将pg的数据目录全部赋给postgres用户,执行以下命令:
    
    [root@localhost build_dir]# chown -R postgres:postgres /usr/local/pgsql
    
    创建目录
    
    [root@localhost build_dir]# mkdir -p /mnt/db1/pgdata/pgsql /mnt/db1/pgdata/pgtbs /mnt/db1/archivelog /backups
    [root@localhost build_dir]# chmod -R 775 /mnt/db1
    [root@localhost build_dir]# chown -R postgres:postgres /mnt/db1
    
    设置环境变量
    
    [root@localhost build_dir]# vi /home/postgres/.bash_profile
    
    PATH=$PATH:$HOME/.local/bin:$HOME/bin
    
    export PATH
    
    export PGPORT=8432
    export PGHOME=/usr/local/pgsql
    export PGDATA=/mnt/db1/pgdata/pgsql
    export PATH=$PGHOME/bin:$PATH
    export MANPATH=$PGHOME/share/man:$MANPATH
    export LANG=en_US.UTF-8
    export DATE='date +"%Y%m%d%H%M"'
    export LD_LIBRARY_PATH=$PGHOME/lib:$LD_LIBRARY_PATH
    export PGHOST=$PGDATA
    export PGUSER=postgres
    export PGDATABASE=postgres
    
    PATH=$PATH:$HOME/.local/bin:$HOME/bin:$PGHOME/bin
    export PATH
    
    执行如下命令使其生效:
    
    [root@localhost build_dir]# source /home/postgres/.bash_profile

    准备

    由于centos自带的版本不够高,直接安装postgresql会报错,所以先给llvm和clang升级
    # wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
    # yum localinstall epel-release-latest-7.noarch.rpm
    # yum install llvm5.0 llvm5.0-devel clang

    yum
    install -y gcc gcc-c++ openssl openssl-devel readline readline-devel zlib zlib-devel llvm5.0 llvm5.0-devel libxml2-devel libxslt-devel libicu-devel python-devel tcl-devel systemd-devel openldap-devel pam-devel clang perl-ExtUtils-Embed epel-release 实际执行:

    yum install -y gcc gcc-c++ epel-release llvm5.0 llvm5.0-devel clang libicu-devel perl-ExtUtils-Embed readline readline-devel zlib zlib-devel openssl openssl-devel pam-devel libxml2-devel libxslt-devel openldap-devel systemd-devel tcl-devel python-devel

    但是公司centos6.3电脑上:无法安装systemd-devel,llvm5.0 ,llvm5.0-devel

    configure

    # cd build_dir/
    vim ../src/Makefile.global.in
    修改以下行:
    COMPILE.c.bc = $(CLANG) -Wno-ignored-attributes $(BITCODE_CFLAGS) $(CPPFLAGS) -flto=thin -emit-llvm -c
    修改为:
    COMPILE.c.bc = $(CLANG) -Wno-ignored-attributes $(BITCODE_CFLAGS) $(CPPFLAGS) -emit-llvm -c
    
    -- --prefix 指定默认安装路径
    [root@localhost build_dir]# ../configure 
    --prefix=/usr/local/pgsql 
    --enable-nls 
    --with-perl 
    --with-python 
    --with-tcl 
    --with-gssapi 
    --with-llvm LLVM_CONFIG='/usr/lib64/llvm5.0/bin/llvm-config' 
    --with-icu 
    --with-openssl 
    --with-pam 
    --with-ldap 
    --with-systemd 
    --with-libxml 
    --with-libxslt


    #configure 命令完成后,会发现创建了 config.status 配置文件
    # 实际执行:
    ./configure --prefix=/home/cdrom/work/postgresql11_5432 --enable-nls --with-perl --with-python --with-tcl --with-gssapi --with-llvm LLVM_CONFIG='/usr/lib64/llvm5.0/bin/llvm-config' --with-icu --with-openssl --with-pam --with-ldap --with-systemd --with-libxml --with-libxslt
    make
    make install
    初始化数据库
    
    切换用户
    [root@localhost build_dir]# su - postgres
    初始化数据库
    [postgres@localhost ~]$ initdb -D $PGDATA -U postgres --locale=en_US.UTF8 -E UTF8
    
        修改监听地址 将listen_addresses的值设置成*,使其监听整个网络,端口号默认是5432,也可以自己设置。
    
    [postgres@localhost ~]$ vim /mnt/db1/pgdata/pgsql/postgresql.conf
    修改内容:
    listen_addresses = '*'
    unix_socket_directories = '.'
    port = 8432
    
        修改客户端认证方式
    
    [postgres@localhost ~]$ vim /mnt/db1/pgdata/pgsql/pg_hba.conf
    添加内容:
    host all all 0.0.0.0/0 md5 # 其他用户登陆
    
    设置防火墙规则
    
    #切换回root用户
    [postgres@localhost ~]$ exit
    [root@localhost build_dir]# firewall-cmd --zone=public --add-port=8432/tcp --permanent
    [root@localhost build_dir]# firewall-cmd --reload
    
    启动数据库
    
    [root@localhost build_dir]# su - postgres
    启动
    [postgres@localhost ~]$ pg_ctl -D /mnt/db1/pgdata/pgsql -l /mnt/db1/archivelog/pgsql.log start
    停止
    [root@localhost postgres]# pg_ctl -D /mnt/db1/pgdata/pgsql/ -s -m fast stop
    
    连接测试
    
    [postgres@localhost ~]$ psql
    查询所有用户
    postgres=# select * from pg_user;
    postgres=# select * from pg_roles;
    查询权限
    postgres=# select * from information_schema.table_privileges where grantee='cc';
    查看有哪些数据库
    postgres=# l
    相当与mysql的show databases;
    postgres=# select datname from pg_database;
    相当于mysql的show tables, public 是默认的schema的名字
    postgres=# SELECT table_name FROM information_schema.tables WHERE table_schema = 'public';
    相当与mysql的describe table_name, 'table_name'是要查询的表的名字
    postgres=# SELECT column_name FROM information_schema.columns WHERE table_name ='table_name';
    退出
    postgres=# q
    
    psql 是 PostgreSQL 的客户端程序,要连接 PostgreSQL 数据库,我们需要指定以下内容:
    
        -d or --dbname 数据库名
        -h or --host 主机名
        -p or --port 端口号,默认5432 端口
        -U or --username 用户名
        [postgres@localhost ~]$ psql -h localhost -p 8432 -U postgres
    
    设置postgres用户密码
    
    [postgres@localhost ~]$ psql
    postgres=# ALTER USER postgres WITH encrypted PASSWORD 'new password';
    postgres=# q
    [postgres@localhost ~]$ psql -h localhost -p 8432 -U postgres
    
    设置开机自启动
    
        设置启动配置
    
    vim /usr/lib/systemd/system/postgresql-11.service
    添加内容:
    [Unit]
    Description=PostgreSQL 11 database server
    Documentation=https://www.postgresql.org/docs/11/static/
    After=syslog.target
    After=network.target
    
    [Service]
    Type=notify
    
    User=postgres
    Group=postgres
    
    # Location of database directory
    Environment=PGDATA=/mnt/db1/pgdata/pgsql/
    
    # Where to send early-startup messages from the server (before the logging
    # options of postgresql.conf take effect)
    # This is normally controlled by the global default set by systemd
    # StandardOutput=syslog
    
    # Disable OOM kill on the postmaster
    OOMScoreAdjust=-1000
    
    Environment=PG_OOM_ADJUST_FILE=/proc/self/oom_score_adj
    Environment=PG_OOM_ADJUST_VALUE=0
    
    # ExecStartPre=/usr/pgsql-11/bin/postgresql-11-check-db-dir ${PGDATA}
    ExecStart=/usr/local/pgsql/bin/postmaster -D ${PGDATA}
    ExecReload=/bin/kill -HUP $MAINPID
    # ExecStart=/usr/local/pgsql9.4/bin/pg_ctl start -D ${PGDATA} -s -o "-p ${PGPORT}" -w -t 300
    # ExecStop=/usr/local/pgsql9.4/bin/pg_ctl stop -D ${PGDATA} -s -m fast
    # ExecReload=/usr/local/pgsql9.4/bin/pg_ctl reload -D ${PGDATA} -s
    KillMode=mixed
    KillSignal=SIGINT
    
    # Do not set any timeout value, so that systemd will not kill postmaster
    # during crash recovery.
    TimeoutSec=0
    
    [Install]
    WantedBy=multi-user.target
    
        添加可执行权限
    
    [root@localhost postgres]# chmod 754 /usr/lib/systemd/system/postgresql-11.service
    
        设置开机自启动
    
    自动启动
    [root@localhost postgres]# systemctl enable postgresql-11.service
    启动
    [root@localhost postgres]# systemctl start postgresql-11.service
    停止某服务
    [root@localhost postgres]# systemctl stop postgresql-11.service
    不自动启动
    [root@localhost postgres]# systemctl disable postgresql-11.service
    检查服务状态(服务详细信息)
    systemctl status postgresql-11.service
    检查服务状态(仅显示是否Active)
    systemctl is-active postgresql-11.service
    显示所有已启动的服务
    systemctl list-units --type=service

     ################################################################

    centos6.3上安装如下:

    systemd-devel,llvm5.0 ,llvm5.0-devel,没有安装上。
    ./configure --prefix=/home/postgres/postgres11_5434 --enable-nls --with-perl --with-python --with-tcl --with-gssapi --with-openssl --with-pam --with-ldap --with-libxml --with-libxslt
    
    同时在make的时候会出错,需要将
    postgresql-11.5/src/test/isolation目录下面的specs目录给换个名称,但是目前还不知道有什么影响
    make -j4
    
    make install
     
  • 相关阅读:
    轻松理解https,So easy!
    都 9102 年了,一起来攻克 Linux 吧!
    8种常见SQL错误用法,你中招了吗?
    如何写出让同事无法维护的代码?
    Spring Boot 2.1.6 发布了!
    推荐一款 MyBatis 开发神器,为简化而生!
    vs2015制作一个超级简单的MVC项目
    解析ASP.NET WebForm和Mvc开发的区别
    asp.net 的 web form 过时了吗
    Asp.net的WebForm的落后技术
  • 原文地址:https://www.cnblogs.com/igoodful/p/11830219.html
Copyright © 2011-2022 走看看