【PG数据库】PG数据库的安装及连接方法

一.PostgreSQL简介

PostgrepSQL是一种对象关系型数据库管理系统。

二.PostgreSQL环境的安装和配置

2.1源码的下载

PostgreSQL 14.0源码可以从PostgreSQL官网:https://www.postgresql.org/download/ 的下载区获取。获取之后将其解压。

源码目录内容,如下图所示:

 

2.2 环境配置

安装之前首先为系统配置环境,这个过程通过运行上图中的configure脚本文件即可,命令如下:

./configure

注意:安装的时候,遇到两个问题,新环境高频出现,可以通过最后一章中的方法进行解决。

2.3 编译

配置好环境变量之后,对源码进行编译。2.1图中,可以看到已经有完整的makefile文件,在目录下执行下面的命令,进行编译:

make clean all

编译过程大约持续5~30min。

2.4 回归测试

如果想在安装文件前测试新编译的服务器,那么可以在这个时候运行回归测试。回归测试是一个用于验证PostgreSQL在你的系统上是否按照开发人员设想的那样运行的测试套件。通过下面命令执行:

make check

如果执行结果如下,代表检查通过:

 

注意:这个命令只能在非特权用户下运行,不能在root权限下运行

2.5 安装、卸载、清理文件

(1)安装

安装PostgreSQL,需要输入下面的命令:

sudo make install

由于install命令需要在root权限下执行,所以需要按上面的命令执行。

(2)卸载

如果想要卸载安装,则执行下面的命令即可,需要注意此命令不会删除任何创建出来的目录:

sudo make uninstall

(3)清理

编译之前可以通过make clean命令,将之前的编译文件进行删除,避免对后续的编译产生影响。

2.6 安装后进行设置

2.6.1 创建用户

root用户不能启动postgresql,所以需要创建一个普通用户来启动数据库,如下图所以,创建用户并设置登录口令。注意:下面两条命令均需在root权限下执行。

命令1:$sudo useradd postgres

没有其他输出,代表成功。

命令2:$sudo passwd postgres

输入类似于这样的密码,可以成功ht3pki2008!!

如下图所示:

 

2.6.2 设定权限

在postgresql目录下创建目录data(数据库存储)和log(日志存储),然后将postgresql的目录权限全部赋予给postgres用户。

命令1:$sudo mkdir /usr/local/pgsql/data

命令2:$sudo mkdir /usr/local/pgsql/log

命令3:$sudo chown -R postgres:postgres /usr/local/pgsql

2.6.3 共享库

在一些有共享库的系统里,需要告知本地系统如何找到新安装的共享库。设置共享库的搜索路径的方法因平台而异,本机是Linux系统,因设置命令需要root权限,故在安装之后运行下面命令进行设置:

sudo /sbin/ldconfig /usr/local/pgsql/lib

设置后,可以在运行时,让链接器更快地找到共享库。

2.6.4 环境变量

1. 将PG添加到环境变量

本机PG安装路径为/usr/local/pgsql,安装到此目录或者其他默认不在搜索路径中的地方,应该在本地的PATH环境变量里面增加一个/usr/local/pgsql/bin。

上面的操作非必须,但可以在使用PG更方便。

将下面的几行加到shell启动文件即可,如:~./bash_profile()如果想影响所有用户就放在/etc/profile):

export PGDATA=/usr/local/pgsql/data

export PGHOME=/usr/local/pgsql

export PATH=$PGHOME/bin:$PATH

注意:/etc/profile文件需要root权限操作,所以在修改的时候可以使用sudo vim /etc/profile,打开文件修改。

2. man文档添加到环境变量

为了让系统找到man文档,将下面的内容添加到shell启动文件里:

MANPATH=/usr/local/pgsql/share/man:$MANPATH

export MANPATH

修改完成后,使用下面的命令使其生效:

命令1:sudo -s(切换到root权限)

  命令2:source /etc/profile

2.6.5 初始化数据库

切换为postgres用户,使用initdb --help可以看到初始化数据库的帮助信息,如下图所示:

命令1:$initdb --help

 

图中红框中文字所示,由于之前在配置文件中已经设定了环境变量PGDATA,因此可以直接使用命令initdb来完成数据库初始化操作。

首先,切换到postgres用户,命令:#su - postgres

然后,初始化数据库,命令:$initdb

如果出现下面的结果,代表初始化成功:

 

此时,可以发现/usr/local/pgsql/data中已经有文件了,代表已经初始化成功。

2.6.6 配置数据库

首先,进入/usr/local/pgsql/data目录,使用命令vim pg_hba.conf,配置对数据库的访问控制(设置为可以通过密码访问)。如下图所示:

 

然后,使用命令vim postgresql.conf,配置数据库参数(设置服务器监听整个网络,设置端口号为5432)。如下图所示:

 

2.6.7 关闭防火墙(root用户)

使用命令systemctl status firewalld.service查看防火墙状态,如图13所示:

 

通过上图可知,防火墙属于关闭状态。

如果查看到防火墙处于开启状态,如下图:

 

若想将其关闭,使用命令sudo systemctl stop firewalld.service关闭防火墙。(ps:使用命令systemctl disable firewalld.service,可以停用防火墙开机自启)

2.6.8 配置系统服务(root用户)

进入postgresql源码包的解压目录(本文为/home/10318001@zte.intra/Desktop/王泽辉的工作空间/postgreSQL源码/postgresql-14.0),执行命令

cp contrib/start-scripts/linux /etc/init.d/postgresql

然后执行vim /etc/init.d/postgresql,查看配置信息是否如下图所示,若不同,请按下面的方式配置:

 

然后使用命令chmod +x /etc/init.d/postgresql(需在root权限下执行),赋予该文件执行权限。另外,还可以使用命令chkconfig --add postgresql(需在root权限下执行),设置服务开机自启。

2.6.9 启动及链接数据库

1. 启动数据库服务

使用命令#service postgresql start(需要root权限),启动数据库服务。可以通过命令:$sudo ps -ef | grep postgres,查看postgres相关进程,如下图所示:

 

3. 链接数据库

通过上述方法启动数据库后,便可通过postgresql自带的客户端工具psql来进行链接(psql二进制文件在/usr/local/pgsql/bin,因为已经配置环境变量,所以全局也可执行)。

请按如下的步骤进行操作:

(1) 在postgresql用户下直接输入命令:$psql,看到版本信息则说明链接成功。

(2) 然后,使用”\password”,设置密码。如下图所示:

 

(3) 验证非本地客户端工具的链接。

最后也是最重要的一步,就是验证非本地客户端工具的连接。本文选择的工具是Navicat Premium,在主机(Window10)打开Navicat与虚拟机中的postgresql服务器进行连接测试,如下图所示:

 

(4) 停止数据库连接服务

若想停止数据库服务,可以在root权限下执行命令:#service postgresql stop

 

总结:以上就是linux环境下源码编译安装PostgreSQL的全过程。

十.错误及解决办法

10.1 安装PG时,执行configure脚本报错

问题一:

1. 安装前,执行configure配置文件时,报下面错误

configure: error: readline library not found
If you have readline already installed, see config.log for details on the
failure.  It is possible the compiler isnt looking in the proper directory.
Use --without-readline to disable readline support.

2. 解决办法

(1)根据提示是没有安装readline包,首先检查是否安装readline包

 

由上可知,系统中已经安装了readline包。

(2)通过yum查询readline包,观察都有哪些相关的包

 

由上可知,readline-devel.i686和readline-devel43.i386可能未安装,尝试安装readline-devel包。

(3)尝试安装readline-devel包

注意,执行这个安装命令,需要在root权限下安装,用下面命令即可。

 

显示“完毕”之后,即代表安装完成。

(3)再次执行configure脚本,即可通过。

问题二:

1. 安装前执行configure脚本,报下面的错误

checking for inflate in -lz... no

configure: error: zlib library not found

If you have zlib already installed, see config.log for details on the

failure.  It is possible the compiler isn't looking in the proper directory.

Use --without-zlib to disable zlib support.

2. 解决办法

(1)首先检查系统中是否安装zlib包

 

(2)通过yum查看zlib包,查看哪些包缺失

 

通过上述查看可知,zlib-devel需要安装。

(3)安装zlib-devel

由于安装需要root权限,采用下面的命令安装即可,如下图:

 

(4)继续执行configure脚本,执行成功,问题得到解决。

 

上一篇:算法之动态规划01背包类似问题-称砝码


下一篇:postgresql学习笔记之归档堆积处理