PostgreSQL 安装

简述

以前用习惯了MySQL,来到新公司开始接触PostgreSQL,这个名字读起来可真拗口呀。
鉴于MySQL和PostgreSQL都是目前比较流行的开源免费数据库,也被各个互联网公司广泛使用,甚至一些传统型的公司也开始放弃Oracle,转投MySQL和PostgreSQL的怀抱。

至于两者之间的比较和对比,由于初次接触PostgreSQL,暂时还不便评论,先从最初始的安装走起。

环境准备

Host List

IP AddressHostsDiskComment
192.168.0.22db1TBDatabase Host

OS

我们采用CentOS作为宿主机操作系统,版本请升级为最新稳定版7.6。(CentOS7即可,建议升级到最新稳定版7.6)
升级方式,请参考本人的另一篇文章:https://www.jianshu.com/p/3e3bc1f51332

并将内核升级到最新稳定版本4.20.

[root@localhost ~]# uname -sr
Linux 4.20.0-1.el7.elrepo.x86_64
[root@localhost ~]# 
[root@localhost ~]# 

安装步骤

看了PG的官网,本来准备安装最新的PG12,结果官网说PG12现在刚刚做了崩溃测试,甚至还没有Alpha和Beta测试,建议继续使用PG10,那我们就老老实实的继续PG10吧。

下载安装

首先安装yaml包

yum install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm

安装PG Server。

yum install postgresql10-contrib postgresql10-server -y

此时,进入到/usr目录应该可以看到PG10的目录。

[root@localhost usr]# ls -al
total 176
drwxr-xr-x.  14 root     root      4096 Dec 28 13:50 .
dr-xr-xr-x.  17 root     root      4096 Jan  7 15:09 ..
dr-xr-xr-x.   2 root     root     28672 Dec 28 13:50 bin
drwxr-xr-x.   2 root     root         6 Apr 11  2018 etc
drwxr-xr-x.   2 root     root         6 Apr 11  2018 games
drwxr-xr-x.   3 root     root        22 Apr 11  2018 include
dr-xr-xr-x.  47 root     root      8192 Dec 28 10:45 lib
dr-xr-xr-x.  53 root     root     36864 Dec 28 11:29 lib64
drwxr-xr-x.  25 root     root      4096 Dec 28 10:45 libexec
drwxr-xr-x.  12 root     root      4096 Apr 11  2018 local
drwxr-xr-x    6 root     root    48 Dec 28 13:50 pgsql-10
dr-xr-xr-x.   2 root     root     16384 Dec 28 11:29 sbin
drwxr-xr-x. 118 root     root      4096 Dec 28 11:29 share
drwxr-xr-x.   4 root     root        32 Apr 11  2018 src
lrwxrwxrwx    1 root     root        10 Dec 28 10:43 tmp -> ../var/tmp
[root@localhost usr]# 

至此已安装完毕,接下来我们对数据库进行初始化。

初始化数据库

准备数据库存储目录

由于PG会默认采用/data作为数据库数据文件存储路径,我们运维把磁盘空间全部mount到/home目录,暂时不能重新mount,如果是自己的环境,可以重新规划磁盘。所以我们需要将PG的数据盘符路径调整到/home目录下。重申:这是研发测试环境,如果生产环境,还请采用标准的磁盘规划。

[root@localhost ~]# mkdir /home/postgresql
[root@localhost ~]# mkdir /home/postgresql/data

增加PG相关用户并赋权

我们需要创建PG的专属用户,并将PG相关的目录全部转归该用户下。
yum安装postgresql,默认会建一个名为”postgres”的系统账号,用于执行PostgreSQL;
可以查询下,如果没有创建,则手工创建下。

[root@localhost ~]# useradd postgres
useradd: user 'postgres' already exists
[root@localhost ~]# 

调整相关目录的权限。

[root@localhost ~]#  chown -R postgres:postgres /home/postgresql
[root@localhost ~]#  chmod 750 -R /home/postgresql
[root@localhost ~]# chown -R postgres:postgres /usr/pgsql-10

修改Root用户的profile,增加PG相关的环境变量。

[root@localhost ~]# vi .bash_profile 
export LD_LIBRARY_PATH=/usr/pgsql-10/bin
export PGDATA=/home/postgresql/data

修改postgres用户的环境变量。

[root@localhost ~]# su postgres
bash-4.2$ cd ~
bash-4.2$ ls -al
total 16
drwx------   3 postgres postgres   75 Dec 28 14:28 .
drwxr-xr-x. 41 root     root     4096 Dec 28 13:50 ..
drwx------   4 postgres postgres   31 Dec 28 13:50 10
-rw-------   1 postgres postgres  500 Dec 28 14:28 .bash_history
-rwx------   1 postgres postgres  265 Dec 28 14:02 .bash_profile
-rw-------   1 postgres postgres   23 Dec 28 14:28 .psql_history
bash-4.2$ vi .bash_profile
[ -f /etc/profile ] && source /etc/profile
PGDATA=/home/postgresql/data
export PGDATA
......

执行初始化。

bash-4.2$ cd /usr/pgsql-10/bin
bash-4.2$ ./postgresql-10-setup initdb

设置自启动

退出postgres用户,用root用户执行如下命令。

[root@localhost ~]# systemctl enable postgresql-10

修改PG启动的参数,修改PGDATA路径。

[root@localhost ~]# vi /usr/lib/systemd/system/postgresql-10.service
......
# Location of database directory
Environment=PGDATA=/home/postgresql/data/
......
[root@localhost ~]# systemctl restart postgresql-10
[root@localhost ~]# systemctl status postgresql-10
● postgresql-10.service - PostgreSQL 10 database server
   Loaded: loaded (/usr/lib/systemd/system/postgresql-10.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2019-01-07 15:08:58 CST; 20h ago
     Docs: https://www.postgresql.org/docs/10/static/
  Process: 15371 ExecStartPre=/usr/pgsql-10/bin/postgresql-10-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS)
 Main PID: 15410 (postmaster)
    Tasks: 8
   Memory: 15.8M

查看PG的状态为active running,就说明PG启动完成。

修改PG的运行参数

经过上面的步骤,我们的PG Server已可以启动,只是还只能本机访问。接下来我们对PG进行参数调整。
找到PG Data的目录,然后修改其中的postgresql.conf.

......
listen_addresses = '*'
......

由于本例为研发测试环境,不做生成环境用,参数调整就不做详细展开了。

重启PG。

[root@localhost ~]# systemctl restart postgresql-10

创建Schema和用户

注意替换自己的数据库用户密码。

bash-4.2$ psql
psql (10.6)
Type "help" for help.

postgres=# CREATE USER harbor WITH PASSWORD '******';
CREATE ROLE
postgres=# 
postgres=# CREATE DATABASE harbor OWNER harbor;
CREATE DATABASE
postgres=# GRANT ALL PRIVILEGES ON DATABASE harbor TO harbor;
GRANT
postgres=# 
    原文作者:cxj_hit
    原文地址: https://www.jianshu.com/p/7ada5c26872d
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞