创建组和用户

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. C11简洁之道:函数绑定

    1.  可调用对象 在C++中,有“可调用对象”这么个概念,那么什么是调用对象呢?有哪些情况?我们来看看: 函数指针: 具有operator()成员函数的类对象(仿函数): 可以被转换为函数指针的类对 ...

  2. 【C++ STL】Queue

    1.定义 class queue<>实作为一个queue(也成为FIFO,先进先出).可以使用push()将任意数量的元素置入queue中,也可以使用pop()将元素以其插入顺序从容器中移 ...

  3. Markdown 代码块中再内嵌一个行内代码

    在 jQuery 1.9 之前(不含1.9):如果传入一个空字符串. null 或 jQuery.parseJSON( jsonString ) ,该函数将返回,而不是抛出一个错误,即使它不是有效的  ...

  4. java将文件转为UTF8工具类

    package hiveTest; import java.io.BufferedReader; import java.io.DataInputStream; import java.io.File ...

  5. 51Nod 1228 序列求和

    T(n) = n^k,S(n) = T(1) + T(2) + ...... T(n).给出n和k,求S(n).   例如k = 2,n = 5,S(n) = 1^2 + 2^2 + 3^2 + 4^ ...

  6. ie8下trim失效

    1.ie8下使用trim失效 trim可以除去字符串两侧的空白字符,但ie8并不支持 2.解决方案 String.prototype.trim = function () { return this ...

  7. Python2.7.3 Tkinter Entry(文本框) 说明

      Python学习记录--关于Tkinter Entry(文本框)的选项.方法说明,以及一些示例. 属性(Options) background(bg) borderwidth(bd) cursor ...

  8. jmeter===JMeter 中Random 随机函数的使用(转)

    原文:http://blog.csdn.net/dreamtl/article/details/68952272 场景:在做接口测试时,比如说要求用户的手机号码不允许重复,那此时可以通过Random ...

  9. 真正的上锁前,为何要调用preempt_disable()来关闭抢占的case【转】

    转自:http://blog.csdn.net/kasalyn/article/details/11473885 static inline void raw_spin_lock(raw_spinlo ...

  10. HDU 6186 CS Course 前缀和,后缀和

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6186 题意:给了n个数,然后有q个查询,每个查询要求我们删掉一个数,问删掉这个数后整个序列的与值,或值 ...