开启掘金成长之旅!这是我参与「掘金日新计划 · 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 - 接下来需要安装所需的依赖包,有
readline和readline-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 查看是否启动成功。显示如下就是成功了。
测试连接
数据库服务搭完了,是不是要连上去使用下呢?接下来看看本地怎么连接上数据库。
首先,我们需要创建数据库。但是,你直接在 root 用户下是不能创建成功的,会报错,看看。
还记得我们创建的用户吗,我们初始化数据库的时候会将执行命令的 Linux 用户作为数据库的一个角色,这里是 postgres 用户,所以我们需要指定用户才行。通过 -U 参数指定用户,来看看命令 createdb -U postgres mydb。这个命令通过角色 postgres 创建了一个名为 mydb 的数据库。
接着,连上刚刚建好的库试试,命令如下,同样需要指定用户。
psql -U postgres mydb
连接成功会显示如下类似的信息。
psql (15.2)
Type "help" for help.
mydb=#
完成
Postgresql 搭建就算完成了,能够接收请求以及通过 systemd 的方式启动。下一部分将讲解客户端怎么连接,以及配置远程连接,授权等管理。