Centos7 下搭建 Postgresql

406 阅读5分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 20 天,点击查看活动详情

公司在用 Postgresql,记录下在 Centos7 下搭建步骤

Postgresql 介绍

Postgresql 和 MySQL 一样是关系型数据库。它对 SQL 进行了一系列的扩展,并提供了数据存储安全和复杂数据扩展的能力。

PostgreSQL的起源可以追溯到1986年,是加州大学伯克利分校POSTGRES项目的一部分,已经有超过35年的开发历史。

搭建准备工作

本来就是搭着学习,这里就不拿主力机做实验了,直接虚拟机里折腾。那么就需要先搭建一个 Centos7 的虚拟环境,这里就略过不讲了。

Postgresql 提供的安装方式有两种,一种是通过 Linux 自带的包管理软件进行安装。第二种是通过源码编译进行安装。用包管理软件安装也没啥难度,本篇只对源码安装进行讲解。

做软件一般不会从零开发,譬如做 Java 后端,大部分会在 Spring 框架上添加自己的业务逻辑,或者是依赖现有的库,简化开发流程。Postgresql 也一样,从源码安装需要编译,那么就需要先安装它所需要的依赖包。强制要求的包有如下几个

  • 要求GNU make 版本 3.81 或更新的版本,Centos7 上安装命令为 yum install make -y,安装之后查看安装的版本
make --version
  • Postgresql 还需要 GCC 编译器对源码进行编译,所以需要安装 gcc,命令为 yum install gcc -y
  • 接下来需要安装所需的依赖包,有 readlinereadline-devel,命令为 yum install readline readline-devel -y

这样前期的准备工作就都做完了,接下来就是安装。

开始安装

既然是源码编译,那么就需要下载源码,从源码的 下载地址 将包下下来之后解压。

接着就进入解压后的目录执行 ./configure 命令,这个命令会生成配置信息,可以配置安装目录。推荐配置下安装目录的路径,这样后期好管理。这里的配置很简单 ./configure --prefix=/usr/local/pgsql,这也是官方推荐的路径。

配置完成之后需要编译了,这里的编译命令为 make && make all,要是你想生成帮助文档等信息,执行 make world就可以了。

编译完成之后我们还需要安装,安装的命令也很简单 make install-world,接着你就能在 /usr/local/pgsql 路径下看到安装完成的文件了。

数据库配置

安装完成的数据库现在还不能使用,需要进行一系列的配置。配置的内容包括:用户(也是Linux当前登录的用户),初始化数据库。有需要还可以配置下 systemd 的服务形式管理 Postgresql。

Postgresql 推荐用一个专门的用户去管理数据库,用 root 进行操作的话会发出警告信息。所以需要先有一个 Linux 用户来管理数据库。在 Centos7 下,执行命令 useradd postgres,就创建好了一个用户。

接着,我们要将安装完成的 postgresql 目录的管理权交给刚建立的用户,执行 chown postgres /usr/local/pgsql

再然后,就可以初始化数据库了。要注意,初始化数据库要指定我们创建的用户,因为 postgresql 默认会用这个账户绑定初始化出来的数据库,登录和操作都需要用到它。这里跟我操作就行 initdb -U postgres -D /usr/local/pgsql/data,这样数据库就初始化完毕了。接着可以用 su postgres -c 'pg_ctl start -D /usr/local/pgsql/data -l serverlog' 启动服务。

配置以 systemd 的方式启动

使用 Linux,大部分时候需要在服务器重启的时候,自动开启一些服务。数据库作为一个很重要的软件,当然需要配置后台服务。

Centos7 的话,需要首先创建文件 sudo vim /etc/systemd/system/postgresql.service,然后将以下信息贴到文件当中。

[Unit]
Description=PostgreSQL database server
Documentation=man:postgres(1)
After=network-online.target
Wants=network-online.target

[Service]
User=postgres
ExecStart=/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
ExecReload=/bin/kill -HUP $MAINPID
KillMode=mixed
KillSignal=SIGINT
TimeoutSec=infinity

[Install]
WantedBy=multi-user.target

接着执行以下命令,postgresql 就在后台启动了,并且每次服务器重启都会启动 postgresql 服务。

sudo systemctl enable postgresql
sudo systemctl start postgresql

我们可以通过命令 sudo systemctl status postgresql 查看是否启动成功。显示如下就是成功了。

image.png

测试连接

数据库服务搭完了,是不是要连上去使用下呢?接下来看看本地怎么连接上数据库。

首先,我们需要创建数据库。但是,你直接在 root 用户下是不能创建成功的,会报错,看看。

image.png

还记得我们创建的用户吗,我们初始化数据库的时候会将执行命令的 Linux 用户作为数据库的一个角色,这里是 postgres 用户,所以我们需要指定用户才行。通过 -U 参数指定用户,来看看命令 createdb -U postgres mydb。这个命令通过角色 postgres 创建了一个名为 mydb 的数据库。

接着,连上刚刚建好的库试试,命令如下,同样需要指定用户。

psql -U postgres mydb

连接成功会显示如下类似的信息。

psql (15.2)
Type "help" for help.

mydb=#

完成

Postgresql 搭建就算完成了,能够接收请求以及通过 systemd 的方式启动。下一部分将讲解客户端怎么连接,以及配置远程连接,授权等管理。