近日需要将PostgreSQL数据库从Windows中迁移到Linux中,Linux CentOS 7 安装PostgreSQL 9.5.17 安装过程 特此记录。

安装环境:

数据库:PostgreSQL 9.5.17

Linux:CentOS 7.3

数据库源文件下载:

在postgresql的官方即可找到源码文件目录(地址:https://www.postgresql.org/ftp/source/),在列表中找到需要下载的 9.5.17版本

进入目录,看到文件列表,选择.tar.gz格式文件,点击下载

编译安装:

将下载好的数据库安装文件,上传至服务器的/user/local/目录下,然后进入该目录,解压安装包。

#   tar -zvxf postgresql-9.5.17.tar.gz

进去解压后的postgresql文件夹,进行编译,并在在编译时指定安装目录

#  ./configure --prefix=/usr/local/postgresql  

编译出错

没有c编译器,安装gcc

#  yum install  gcc  

安装完成后,再次执行编译

编译出错

缺少readline开发包,安装readline-devel包:

#  yum install  readline-devel  

安装完成后,再次执行编译

编译出错

缺少zlib开发包,安装zlib开发包:

#  yum install  zlib-devel   

安装完成后,再次执行编译

编译成功,成功创建创建了config.status配置文件

编译配置完成,开始执行安装:依次执行:

#  make

#  make install

编译安装完成

设置用户权限及环境变量

编译安装成功后,接下来要做的就是创建一个普通用户,因为默认超级用户(root)不能启动postgresql,所以需要创建一个普通用户来启动数据库,执行以下命令创建用户:

#  useradd admin

需要设置权限,将postgres的数据目录全部赋权给admin用户(此处我将postgres的数据目录指定在在/usr/local/postgresql/data目录下):

# chown -R admin:admin /usr/local/postgresql/

设置相关环境变量

此处仅仅设置admin用户的环境变量,所以首先切换到admin用户

切换用户: #  su - admin

然后打开.bash_profile文件并追加以下内容:

打开.bash_profile文件 : $   vi .bash_profile

追加一下内容:

PGHOME=/usr/local/postgresql
export PGHOME
PGDATA=/usr/local/postgresql/data
export PGDATA PATH=$PATH:$HOME/.local/bin:$HOME/bin:$PGHOME/bin

修改完成后可以通过 $ source ./.bash_profile  使其立即生效

检验环境变量是否设置正确

切换任意目录输入$  which psql  以及  $  psql -V  即可分别查看psql客户端的路径以及postgresql的数据库版本

初始化数据库

由于配置了环境变量,所以此处我们直接执行initdb命令即可完成db初始化

$  initdb

初始化成功

进入postgresql的目录可以看到生成的数据目录data以及该目录的相关数据和配置文件:

接下来修改配置文件,pg_hba.conf和postgresql.conf。一个是访问控制配置(127.0.0.1改为信任的客户端ip网段使其可以远程访问),一个是postgresql主配置文件(listen_address=localhost改为星号使其监听整个网络)。

进入/usr/local/postgresql/data目录,修改文件,这里将pg_hba.conf的ip地址修改为0.0.0.0/0,而加密方式改为md5,就表示需要密码访问:

pg_hba.conf文件修改:

修改postgresql.conf文件

将listen_address=localhost改为星号使其监听整个网络:

同时需要放开机器的5432端口,这里为了方便起见,直接关闭服务器防火墙:

关闭防火墙:

$ systemctl stop firewalld

此时为普通用户,关闭防火墙需要root账户权限,需要输入root账户密码获取权限

禁止防火墙开机启动:

$ systemctl disable firewalld

此时为普通用户,取消防火墙开机启动同样需要root账户权限,需要输入root账户密码获取权限

查看防火墙状态:

$ systemctl status firewalld

防火墙已经关闭

至此配置相关的内容就全部完成了,最后就是启动并连接数据库了。

启动、连接数据库

在初始化数据库结束时我们已经看到了启动命令

由于之前设置了环境变量,所以已经指定了数据目录PGDATA,-l表示日志文件目录,通常需要指定,所以我们在/usr/local/postgresql根目录下再创建一个log目录用来存放日志文件并赋予可写的权限

进入 /usr/local/postgresql目录

创建文件夹

$ mkdir log

赋予权限

$ chown -R admin:admin /usr/local/postgresql/log/   
启动数据库

$ pg_ctl start -l /usr/local/postgresql/log/pg_server.log

启动成功:

通过postgresql自带的客户端工具psql来进行连接(在连接是需要制定连接数据库,这里直接连接postgres数据库):

$ psql postgres

设置admin用户的密码(默认为空),用psql连接成功后直接输入 \password  即会提示输入两次密码,如下图:

修改完密码以后,就是最重要的一点就是验证非本地客户端工具的连接了,毕竟我们是要做数据库服务器的,这里我选择的工具是Navicat Premium,在主机(Windows 10)打开Navicat与虚拟机中的postgresql服务器进行连接测试:

可以发现连接成功,同理停止数据库可以使用命令 pg_ctl stop 来关闭postgresql服务,很简单,至此关于源码编译安装postgresql就全部结束了。

Linux CentOS 7 安装PostgreSQL 9.5.17 (源码编译)的更多相关文章

  1. Linux 之 软件安装-yum、rpm、源码安装

    软件安装-yum.rpm.源码安装 参考教程:[千峰教育] 一.Yum安装软件: 基本说明: 1.yum相当于windows上面的360的软件中心,appstore,安卓的应用商店. 2.yum是re ...

  2. linux服务器上,yum、rpm、源码编译安装及卸载

    源码的编译安装及卸载 源码安装三部曲 1.生成makefile编译文件./configure 一般安装包下面都有一个configure文件,用来生成makefile编译文件常用的参数: --prefi ...

  3. LNMP架构的源码编译以及yum安装

    LNMP架构的源码编译以及yum安装 目录 LNMP架构的源码编译以及yum安装 一.LNMP架构的编译安装 1. 安装nginx服务 (1)关闭防火墙 (2)安装依赖包 (3)创建运行用户 (4)编 ...

  4. centos7源码编译安装Subversion 1.9.5

    svn是Subversion的简称,是一个开放源代码的版本控制系统.svn有两种运行方式:1.独立服务器(svn://xxx.xxx/xxx) 2.借助apache(http://svn.xxx.xx ...

  5. apache源码编译安装

    源码安装apche 下载apache的源码包文件 访问http://mirror.bit.edu.cn/apache/httpd/,复制如下gz文件的链接地址,并使用wget下载到本地 wget -P ...

  6. NoSql1 在Linux(CentOS)上安装memcached及使用

    前言:       今天是初五,生活基本要从过年的节奏中回归到正常的生活了,所以想想也该想想与工作有关的事情了.我之前在工作中会经常使用memcached和redis,但是自己一直没有时间系统的好好看 ...

  7. Linux环境PostgreSQL源码编译安装

    Linux环境PostgreSQL源码编译安装 Linux版本: Red Hat 6.4 PostgreSQL版本: postgresql-9.3.2.tar.gz 数据存放目录: /var/post ...

  8. Linux(CentOs)下安装Phantomjs + Casperjs

    Linux(CentOs)下安装Phantomjs + Casperjs 是参照cnMiss's Blog http://ju.outofmemory.cn/entry/70691的博客进行安装的 1 ...

  9. linux/centos下安装nginx(rpm安装和源码安装)详细步骤

    Centos下安装nginx rpm包                                                                                 ...

随机推荐

  1. 动手制作 java版本切换 多版本JDK安装 windows JDK版本 切换

    [参考]windows下JDK版本之间的切换 1.下载各版本安装包,指定安装位置顺序安装 2.删除注册表,文件和环境变量 文件: C:\Windows\System32  下java相关文件如 jav ...

  2. Cassandra开发入门文档第三部分(非规范化关系结构、批处理)

    非规范化关系结构 第二部分我们讲了复合主键,这可以灵活的解决主从关系,也即是一对多关系,那么多对多关系呢?多对多关系的数据模型应该回答两个问题: 我跟着谁? 谁跟着我? -- 建表,我们发现这里有个不 ...

  3. LODOP表格水平居中3(宽度为百分比)

    如果一个表格在css样式等中设置了固定的宽度,想要实现表格在纸张中水平居中,可根据固定的宽度设置合适的左边距,如果打印项内容在打印项宽度中居中,可以设置打印项在纸张中居中.方法1:宽度固定,纸张大小固 ...

  4. myeclipse An internal error occurred during: "Initialize metrics".

    重新安装的myeclipse,在打开的时候弹出:    An internal error occurred during: "Initialize metrics". com/g ...

  5. MYSQL:查询单表中不同邮箱最近一次发送状态

    1.联系方式表-customer_contact: id email 1 123456@qq.com 2 987643@qq.com 3 hahaha@qq.com 2.发送邮件记录表-contact ...

  6. LRU缓存实现

    LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高” 在java中可以采用Linke ...

  7. tkinter中Partial Function Example

    from functools import partial as pto from tkinter import Tk, Button, X from tkinter.messagebox impor ...

  8. 用python批量添加保护站点

    最近在测试的过程中,由于一个bug的复现需要添加1600个保护站点,手工添加谁知到要何年何月,因此想到了用python进行自动化批量添加保护站点! 具体代码如下: #!/usr/bin/env pyt ...

  9. react-navigation 的抽屉效果 createDrawerNavigator (DrawerNavigator)

    一.前言: react-navigation  3.x 版本中, 使用createDrawerNavigator 替换 原先的DrawerNavigator 方法: 那么,当前createBottom ...

  10. ZooKeeper学习笔记(二)——内部原理

    zookeeper学习笔记(二)--内部原理 1. zookeeper的节点的类型 总的来说可以分为持久型和短暂型,主要区别如下: 持久:客户端与服务器端断开连接的以后,创建的节点不会被删除: 持久化 ...