Install Postgresql12 in Centos7

1. 背景

运行环境:运行在VMware虚拟机中的Linux系统centos7

数据库版本:数据库版本postgresql12

安装方式:源码安装

2. 安装步骤

参照了PostgreSQL中文社区提供的安装方式,它提供了Centos平台的源码安装指导。

注:安装Postgresql的过程中可能会发现系统缺少比如vim之类支持的套套件、组件或包,根据error提示安装即可,亦可提前安装,包括但不限于:

[root@centos7 ~]# yum -y install wget;
[root@centos7 ~]# yum install -y bzip2;
[root@centos7 ~]# yum install gcc;

我的步骤:

准备工作:

创建存放postgresql安装包的文件夹:

[root@centos7 ~]# mkdir /opt/softwarePackage

创建安装postgresql的文件夹:

[root@centos7 ~]# mkdir /opt/pgsql

在这里插入图片描述

图1 创建pgsql相关目录(安装后的截图,所以把不相关文件打了码)
[root@centos7 ~]# cd /opt/softwarePackage

(1)wget https://ftp.postgresql.org/pub/source/v12.2/postgresql-12.2.tar.bz2

(2)tar xjvf postgresql*.bz2 #解压至一个目录

(3)cd potgresql-12.2

(4)./configure --prefix=/opt/pgsql #拟安装至/opt/pgsql

(5)make world

(6)make install-world

(7)adduser postgres #增加新用户,系统提示要给定新用户密码

(这一步可能会提示用户已存在,可以不用管,进行下一步。)

(8)mkdir /opt/pgsql/data #创建数据库目录

(9)chown -R postgres:postgres /opt/pgsql/data

(10)su - postgres #使用postgres帐号操作

这个时候可能出现“切换用户显示bash-4.2$,不显示用户名路径的问题”,参照“4. 问题及解决方法”。

(11)/opt/pgsql/bin/initdb -D /opt/pgsql/data #初始化数据库

(12)/opt/pgsql/bin/pg_ctl -D /opt/pgsql/data -l logfile start #启动数据库

(13)/opt/pgsql/bin/createdb genericdb #假定数据库名为gerericdb)

(14)/opt/pgsql/bin/psql genericdb # (进入数据库内部)

(15)\q #退出

3. 设置开机自启

重要提醒:这是通过源码编译安装pgsql设置开机启动的方式!

参考1:Centos7.x设置postgresql开机启动

参考2:PostgreSQL自启动设置

3.1 操作步骤:

(1)拷贝postgresql解压目录下的linux文件到init.d下并重命名为postgresql:(根据自己的目录修改)

[root@centos7 ~]# cd /opt/softwarePackage/postgresql-12.2/contrib/start-scripts/
[root@centos7 start-scripts]# cp linux /etc/init.d/postgresql
[root@centos7 start-scripts]# vi /etc/init.d/postgresql

(2)编辑postgresql文件(根据自己的目录修改)并保存:

prefix=/opt/pgsql
PGDATA="/opt/pgsql/data"

说明:prefix=(这里是postgresql 安装路径);PGDATA=(这里是postgresql的数据目录)

(3)为所有用户添加改脚本的可执行权限:chmod a+x /etc/init.d/postgresql

(4)通过chkconfig命令将该脚本注册为开机启动即可 chkconfig --add postgresql

(5)设置开机启动 chkconfig postgresql on

(6)备注:

启动服务:service postgresql start
停止服务:service postgresql stop
重启服务:service postgresql reload

查看进程  :ps -ef|grep postgres

检查服务状态:systemctl  status postgresql
显示所有已启动的服务:systemctl  list-units --type=service

使用reboot命令重启系统。

3.2 使用Navicat连接pgsql数据库:

第一步:填写SSH并测试连接

在这里插入图片描述

第二步:填写主机名及用户名密码:

由于我的虚拟机和网络连接是使用NAT模式,共享主机的IP地址,所以这里的主机可以写localhost,我没有设置pgsql的密码,所以这里的密码一栏其实是空的,强烈建议数据库设置密码!

在这里插入图片描述

注意!!!

看到很多文章说要修改data目录下的pg_hba.conf和postgresql.conf这两个文件,而我并没有修改也可以。

附上很多文章中的其中两篇:

https://blog.csdn.net/embracejava/article/details/53377351

https://blog.csdn.net/qq_39503366/article/details/100992504

请谨慎参考!

4. 问题及解决方法

反反复复安装了几次,遇到过很多问题,但是基本都能通过简单搜索解决,这里只介绍一个比较麻烦的问题的解决方法,就是 “su - postgres #使用postgres帐号操作”时出现“切换用户显示bash-4.2$,不显示用户名路径的问题”。

先列举一个无效方法的文章(或许针对他的环境是OK的,但是对我不行):切换或者用户登录时 出现 显示 -bash-4.2$ 问题 的解决

切实可行的解决方法(参考了文章:centos 切换用户显示bash-4.2$,不显示用户名路径的问题 ):

第一步:

[root@centos7 /]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
...(中间省略一部分)
postgres:x:26:26:PostgreSQL Server:/var/lib/pgsql:/bin/bash

可以看到用户postgres的用户目录在/var/lib/pgsql下,而不是有的文章说的/home下,因此把/etc/skel/下的.bash*文件复制到/var/lib/pgsql下即可:

[root@centos7 /]# cp /etc/skel/.bash* /var/lib/pgsql/
[root@centos7 pgsql]# source ~/.bash_profile

复制过去之后,还是需要使用”source ~/.bash_profile“命令使其生效。

在这里插入图片描述

5. 其他阅读参考

(1)PostgreSQL在Linux上的RPM和源码安装

(2)postgresql在linux下的的开机自启动服务与环境变量的配置

(3)Linux下PostgreSQL开机启动配置方法

(4)Linux下设置postgresql数据库开机启动

(5)安装postgreSQL出现configure:error:readline library not found解决方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

周公解码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值