zoukankan      html  css  js  c++  java
  • CentOS7编译安装PostgreSQL

    创建组和用户

    groupadd postgres
    useradd -g postgres postgres
    passwd postgres

    编译安装

    yum install -y gcc gcc-c++ zlib-deve openssl-devel
    tar xf postgresql-10.5.tar.gz
    cd postgresql-10.5
    ./configure --prefix=/opt/app/postgresql --without-readline
    make && make install

    安装contrib目录下的一些工具,是第三方组织的一些工具代码,建议安装

    cd contrib
    make && make install

    创建数据目录

    mkdir -p /opt/data/postgresql
    mkdir -p /opt/log/postgresql
    chown postgres:postgres -R /opt/app/postgresql
    chown postgres:postgres -R /opt/data/postgresql
    chown postgres:postgres -R /opt/log/postgresql

    添加环境变量

    //切换用户
        su - postgres 
    //在~.bash_profile的最后添加如下内容:vim ~/.bash_profile 
        export PGHOME=/opt/app/postgresql
        export PGDATA=/opt/data/postgresql
        export PATH=$PGHOME/bin:$PATH
        export MANPATH=$PGHOME/share/man:$MANPATH
        export LANG=en_US.utf8
        export DATE=`date +"%Y-%m-%d %H:%M:%S"`
        export LD_LIBRARY_PATH=$PGHOME/lib:$LD_LIBRARY_PATH
        alias rm='rm  -i'
        alias ll='ls -lh'
    //环境变量退出该用户会话,再次进入生效

    初始化数据库

    initdb -D /opt/data/postgresql

    启动服务

    pg_ctl -D /opt/data/postgresql -l /opt/log/postgresql/pgsql.log start|stop|restart

    登录数据库

    *使用 "psql 数据库名"登录数据库,缺省数据库名是,连接到默认的数据库postgres
    *本地不用指定数据库
    psql
    
    //创建测试数据库
    create database test;
    //切换到test数据库
    c test
    //创建测试表
    create table test (id integer, name text);
    //出入测试数据
    insert into test values (1,'heboan');
    insert into test values (1,'何波安');
    //选择数据
    select * from test ;
    //退出数据库
    q

    修改PostgreSQL数据配置实现远程访问

    vim /opt/data/postgresql/pg_hba.conf
        *在文件的最下方加上下面的这句话(出于安全考虑,不建议这样配置)
        host    all         all         0.0.0.0/0             trust
    
    vim /opt/data/postgresql/postgresql.conf 
        *设置监听整个网络,查找“listen_addresses ”字符串

    重启服务

    pg_ctl -D /opt/data/postgresql -l /opt/log/postgresql/pgsql.log restart
    
    
    netstat -lntp|grep 5432
    tcp    0      0 0.0.0.0:5432      0.0.0.0:*      LISTEN      25959/postgres

     

    设置数据库账号postgres的密码

    postgres是默认数据库创建的超级管理员,上面我们配置远程访问,添加了一条

    host    all         all         0.0.0.0/0             trust

    这会导致我们客户端使用用户postgres无需密码就可以直接连接上服务器,这是非常危险的!

    这里我改成password,重启服务

    host    all         all         0.0.0.0/0             password

    设置postgres密码

    [postgres@c1 ~]$ psql
    postgres=#  ALTER role postgres WITH PASSWORD '123456'; 

    这样远程客户端就需要使用密码123456来连接了。

    大家可能会奇怪为什么在操作系统postgres用户下为什么不需要输入用户名和密码?这是因为,建立了一个与初始化数据库时的操作系统用户同名的数据库用户,同时中国用户是数据库超级用户,在这个OS用户下,登录数据库时执行的是操作系统认证,所以不需要用户名和密码,当然也可以通过修改pg_hba.conf文件来要求输入密码

    pg_hba.conf是客户端认证配置文件,定义如何认证客户端

    下面是常用的pg_hba.conf配置

    # TYPE  DATABASE  USER  CIDR-ADDRESS  METHOD
     
    # "local" is for Unix domain socket connections only
    local    all      all                 ident
     
    # IPv4 local connections:
    host     all      all   127.0.0.1/32  md5
     
    # IPv6 local connections:
    host     all      all   ::1/128       md5

    TYPE定义了多种连接PostgreSQL的方式,分别是:“local”使用本地unix套接字,“host”使用TCP/IP连接(包括SSL和非SSL),“host”结合“IPv4地址”使用IPv4方式,结合“IPv6地址”则使用IPv6方式,“hostssl”只能使用SSL TCP/IP连接,“hostnossl”不能使用SSL TCP/IP连接

    DATABASE指定哪个数据库,多个数据库,库名间以逗号分隔。“all”只有在没有其他的符合条目时才代表“所有”,如果有其他的符合条目则代表“除了该条之外的”,因为“all”的优先级最低。如下例:

    local    db1    user1    reject
    local    all      all         ident

    这两条都是指定local访问方式,因为前一条指定了特定的数据库db1,所以后一条的all代表的是除了db1之外的数据库,同理用户的all也是这个道理。

    USER指定哪个数据库用户(PostgreSQL正规的叫法是角色,role)。多个用户以逗号分隔。

    CIDR-ADDRESS项local方式不必填写,该项可以是IPv4地址或IPv6地址,可以定义某台主机或某个网段。

    METHOD指定如何处理客户端的认证。常用的有identmd5passwordtrustreject

    md5是常用的密码认证方式,如果你不使用ident,最好使用md5。密码是以md5形式传送给数据库,较安全,且不需建立同名的操作系统用户。

    password是以明文密码传送给数据库,建议不要在生产环境中使用。

    trust是只要知道数据库用户名就不需要密码或ident就能登录,建议不要在生产环境中使用。

    reject是拒绝认证。

  • 相关阅读:
    fetch
    创建Vue实例传入的option
    Text and Binary modes
    daemon_int
    http 协议 c++代码 获取网页
    asp.net mvc 5 初体验
    win32 音视频相关 api
    setuid和seteuid
    用0x077CB531计算末尾0的个数
    webservice gsoap 小记
  • 原文地址:https://www.cnblogs.com/sellsa/p/9530354.html
Copyright © 2011-2022 走看看