文章
问答
冒泡
Linux 系统安装部署 PostgreSQL (一)

PostgreSQL 默认的用户是postgres , 推荐先创建该用户。


Linux创建用户,指定用户家目录,创建环境变量文件的具体方法百度一下哈,我偷懒了


我们是通过编译源码的方式安装,这期间需要安装一下必要的依赖包,如果依赖包没有安装,则在编译期间会报错。

因为个人环境的不同,根据报错缺少的依赖包,个人安装。


这里根据PG13.8来做演示

准备工作

下载 PG 源码

http://www.postgresql.org/ftp/source/


解压PG 源码得到对应的解压文件夹


image.png

编译源码:

1. 配置编译的相关参数

./configure --prefix=/chason/postgres/base/pg_13.8


PS: prefix 表示编译之后,将PG安装在哪,别忘记我们下载的是源码,并不是可以运行的PG软件,这个路径就是配置我们将生成的可执行的psql之类的文件放在哪,换言之就是软件目录。


这里我们出现了第一个错误


image.png


错误提示我们少了readline的包,我们看看系统里


image.png


发现其实是有readline 的,其实问题的真正原因是,除了要有readline 还需要安装readline-devel,至于这个功能有什么用,我们后面专门开一篇文章讲一讲;虽然提示中说可以通过 --without-readline 屏蔽参数,但是我不是很推荐这个方式,后面说原因。


那么我们给这个依赖库安装上


image.png


经过一番等待安装成功,我们再次执行配置

好的,不出所料,再次出错了,遇到问题这事儿太普通了,继续解决!


image.png


这次是少了zlib,不慌,我们继续安装依赖包


image.png


再次执行配置,发现配置成功啦!


留上上面这一段是想说明,每个人环境不一样,安装的依赖也不一样,编译的时候可能会出各种问题,但是不慌,根据提示,我们只要将环境弄好,所有的配置和编译都会很顺利。

可能有人会问了,执行个配置怎么需要安装这么多的依赖,主要是因为每个依赖都有他不同的作用,后面会开一期专门来讲一讲这些依赖,目前我们的重头戏是先安装好。

2. 执行编译

执行 make && make install


如果是第一次编译,这个阶段可能需要耗费一些时间,当然也可能会遇到各种问题,最常见的问题就是gcc没安装好,或者和Linux内核版本不匹配造成的编译失败,这时候我们要重新安装gcc

如果出现错误,记得要及时看错误的提示,大部分错误提示都非常直接,遇到问题我们不要慌,根据错误提示解决他!

我这边呢因为环境没有问题直接一次通过了。


编译完成之后还记得我们configure的那个prefix吗? 走,我们去那个目录下


image.png


上面这四个就是我们刚刚操作一顿编译的结果啦,当然,我们常用的都在bin目录下


image.png


那么既然bin 目录出来了,那么接下来做什么? 当然是配置环境变量啦! 把pg bin的目录添加到环境变量中!

啥,你不会在Linux中配置环境变量? 百度一哈,很多大佬会教你怎么做,我因为懒,就不写了哈。


配置完环境变量之后,你在哪个目录下都能用PG命令啦!


image.png

初始化并创建PG实例

上面的动作是将源码编译成可执行文件,在MySQL中,就相当于你解压了一个MySQL的zip安装包.... 完成上面的步骤表示你环境里的PG软件安装好了,但是软件有了不代表你有PG实例了。


这里我们推荐将软件和实例的目录分开,这样,你在一台机器上就可以创建多个实例了,至于为什么要创建多个实例,当然是为我们下一章 搭建PG主从来做准备啊~


我的软件目录是:/chason/postgres/base/pg_13.8


我的实例目录是:/chason/postgres/instances


image.png


我的习惯是,通过不同的端口区分PG实例,实例的主目录通过pg端口号来区分,各位可以根据自己的习惯来,但是要记住自己的实例在哪个目录

1. 初始化 PG

initdb -D /chason/postgres/instances/pg6100/data -E UTF8


通过initdb对PG进行初始化,我们把数据目录放到实例的data下


image.png


如果执行成功会提示你成功,并告诉你启动PG的指令,但是我们不着急启动,我们先来配置一下

2. 修改配置文件

(1). 修改Postgresql.conf


image.png


我们简单修改一下配置文件,将文件目录修改成自己对应的目录 修改端口 不然就是默认端口5432 修改最大连接数为了后面主从做准备


(2). 修改pg_hba.conf


image.png


我们为了自己方便添加了一行全信任免密,这个只是为了我们自己测试方便,千万不要在任何生产环境这么配置,不然你会体会从入职到离职!


启动PG 并登录实例

1. 启动

还记得我们初始化完成之后的提示吗? 没错就用提示的命令启动


image.png


实例启动成功,接下来我们登录

2. 登录

我们使用psql命令进行登录


image.png

补充知识

前面我们埋了一个坑,我们配置的时候遇到的错误,官方的提示说可以使用 --without-readline来解决,不用安装readline-devel包;我的推荐是安装对应的包。


首先我们要知道 readline是干嘛用的, readline 用于记录你之前的输入记录,方便你可以通过方向键来进行之前输入的快速填充。


举个栗子:

postgres=# select now();
              now              
-------------------------------
 2023-02-06 13:40:40.217387+08
(1 row)

postgres=# select now();

当我们输入过 select now(); 第二次需要同样的sql ,只要按方向上键就可以了。


如果我们使用 --without-readline 会发生什么呢?

postgres=# select now();
              now              
-------------------------------
 2023-02-06 13:40:40.217387+08
(1 row)

postgres=# ^[[A

你会发现 ,方向键不管用了,已经变成了一个奇怪的编码。 虽然PG官方不推荐使用readline(这也是为啥只有 --without-readline 没有 --with-readline)但是这玩意会极大的方便我们写SQL, 我推荐还是装上,不要禁用。


关于作者

chason
只要学不死,就往死里学
获得点赞
文章被阅读