创建组和用户

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 (,'heboan');
insert into test values (,'何波安');
//选择数据
select * from test ;
//退出数据库
\q

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

vim /opt/data/postgresql/pg_hba.conf
*在文件的最下方加上下面的这句话(出于安全考虑,不建议这样配置)
host all all 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
tcp 0.0.0.0: 0.0.0.0:* LISTEN /postgres

设置数据库账号postgres的密码

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

host    all         all         0.0.0.0/             trust

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

这里我改成password,重启服务

host    all         all         0.0.0.0/             password

设置postgres密码

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

这样远程客户端就需要使用密码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/ md5 # IPv6 local connections:
host all all ::/ 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指定如何处理客户端的认证。常用的有ident,md5,password,trust,reject。

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

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

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

reject是拒绝认证。

CentOS7编译安装PostgreSQL的更多相关文章

  1. Centos7下安装postgresql(tar包形式安装)

    Centos7下安装postgresql(tar包形式安装) 1.官网下载地址: https://www.postgresql.org/ftp/source/ 2.将下载来tar包上传到linux服务 ...

  2. CentOS7编译安装Nginx-1.8.1和编译参数

    CentOS7编译安装Nginx-1.8.1和编译参数 Web服务器Nginx    LNMP是一组众所周知的Web网站服务器架构环境,即由Linux+Nginx+MySQL+PHP(MySQL有时也 ...

  3. centos7编译安装MySQL5.7.9

    title: centos7编译安装MySQL5.7.9 date: 2016-05-12 16:20:17 tags: --- Centos7编译安装mysql5.7.9 mysql5.7有更好的性 ...

  4. centos7 编译安装新版LNMP环境

    centos7 编译安装新版LNMP环境 环境版本如下: 1.系统环境:Centos 7 x86_64 2.NGINX:nginx-1.11.3.tar.gz 3.数据库:mariadb-10.0.2 ...

  5. CentOS7编译安装httpd-2.4.41 php7.3

    CentOS7编译安装httpd-2.4.41 php7.3 安装参考环境: CentOS Linux release 7.5.1804 (Core) 一.安装依赖包 httpd安装的依赖包 # yu ...

  6. Centos7 编译安装PHP7

    Centos7 编译安装PHP7 编译安装的方式可以让组件等设置更加合理,但需要你对PHP的代码及各种配置非常的熟悉,以下为大致的安装流程,大家可以参考 1.下载编译工具 yum groupinsta ...

  7. Ubuntu下编译安装postgreSQL 10.5

    Ubuntu下编译安装postgreSQL 10.5 ubuntu 16.04 LTS系统postgreSQL 10.5 安装包准备 1.从PostgreSQL官网下载PostgreSQL的安装包 安 ...

  8. CentOS7编译安装php7.1配置教程详解

    这篇文章主要介绍CentOS7编译安装php7.1的过程和配置详解,亲测 ,需要的朋友可以参考. 1.首先安装依赖包: yum install libxml2 libxml2-devel openss ...

  9. Redhat 7.2 编译安装PostgreSQL 10

    1.环境说明 CentOS7.2 postgresql10.4 2.下载 postgresql的官方地址 https://www.postgresql.org/ftp/source/ 在下载列表中根据 ...

随机推荐

  1. Parallel

    介绍 C# 4.0 的新特性之并行运算 Parallel.For - for 循环的并行运算 Parallel.ForEach - foreach 循环的并行运算 Parallel.Invoke - ...

  2. Java应用调试利器——BTrace教程

    http://www.jianshu.com/p/26f19095d396 背景 生产环境中可能出现各种问题,但是这些问题又不是程序error导致的,可能是逻辑性错误,这时候需要获取程序运行时的数据信 ...

  3. 基于html5的动画库,非svg和canvas

    基于html5的动画库,非svg和canvas https://greensock.com/docs/#/HTML5/GSAP/TweenLite/

  4. 用 Docker 来构建 Jumpserver

    说明: 项目从 [ Jumpserver 官方 ] fork 而来. 主要更新: OS: ubuntu:18.04 优化了 Dockerfile Jumpserver 版本: 1.4.0 redis ...

  5. 关于C++的宏:WIN32和DEBUG

    判断平台相关,判断程序是属于debug版本还是release版本,我们会这么做. #ifdef WIN32 #else #endif #ifdef DEBUG // 如果是调试版本 #else //发 ...

  6. CSS 竖线颜色渐变

    <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"& ...

  7. 网络设备之分配net_device结构

    注册网络设备时,会调用pci_driver->probe函数,以e100为例,最终会调用alloc_netdev_mqs来分配内存,并且在分配内存后调用setup函数(以太网为ether_set ...

  8. python基础===requests学习笔记

    这里有一个新的学习requests网站:http://docs.python-requests.org/zh_CN/latest/user/quickstart.html2017/11/30 Requ ...

  9. goreplay HTTP-HTTPS流量复制工具

    goreplay相比tcpcopy只能复制HTTP和HTTPS的流量 goreplay编译很麻烦,就直接使用编译好的版本 gor_0.10.1_x64.tar.gz 支持centos5,测试的是cen ...

  10. Winform利用委托进行窗体间的传值

    在form1.cs中 1.委托的定义 //定义一个委托 public delegate void AddUsrEventHandler(object sender, AddUsrEventHandle ...