centos源码安装postgresql数据库并设置自启以及smlar插件安装【超详细】

发布于:2023-01-24 ⋅ 阅读:(13) ⋅ 点赞:(0) ⋅ 评论:(0)

1.环境说明

本次操作所用操作系统为7.9,postgresql数据库版本为14.4(源码安装,版本都可以尝试)

cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
psql --version
psql (PostgreSQL) 14.4

写这篇博客的目的更多的是做笔记,虽然过程中踩了很多的坑,但是最后一连串都操作成功了,很感谢文中参考的这些博客的博主,有任何疑问欢迎留言,说不定你踩过的坑我也踩过

2.postgresql数据库说明

postgresql数据库作为目前最先进的关系型数据库,还是很能打的,这次安装postgresql数据库的原因还是其能够对千万级别数据汉明距离相似性查找,且效率极高;
postgresql官网

3.postgresql数据库安装

3.1获取源码安装包

进入首页之后可以直接download,就可以看到各种方式下载,本人比较喜欢源码下载(可以离线使用),原因就跟windows安装软件一样
,可以安装在自定义的目录,能清楚的知道文件夹目录里面方的啥,而不喜欢用360等病毒软件傻瓜安装。

postgresql源码下载地址
v14.4下载

选择tar.gz后缀下载就行,并放到centos系统的 /usr/temp目录下(这里根据你喜好,选择地方放就行)

3.2postgresql安装

3.3.1 postgresql安装

执行步骤如下(root管理员身份执行),若有报错可以根据3.3进行解决,哪一步错了解决之后再重新执行就行:

1.| cd /usr/temp
2.| tar -xvf postgresql-14.4.tar.gz
3.| mkdir -p /usr/local/postgre14
4.| cd /usr/tmp/postgresql-14.4/
5.| ./configure --prefix=/usr/local/postgre14/
6.| make&&make install

每一步的说明如下,其中6步骤时间比较长,估计几分钟:

1.进入tar包目录
2.将tar包解压
3.创建postgresql数据库安装路径(类似于windows安装软件让你选择安装路径)
4.进入解压之后的目录
5.设置postgresql数据库安装目录
6.进行编译和安装

3.3.2 postgresql配置

1.创建postgres专用用户,postgresql是无法使用root账户进行初始化操作的

adduser postgres

2.添加环境变量,类似于windows的快捷方式

vi ~/.bash_profile

3.添加内容如下:

PATH=$PATH:/usr/local/postgre14/bin/

4.使环境变量生效

source ~/.bash_profile

5.创建数据库数据目录

mkdir -p /data/postgre/data

6.将数据库目录给postgres用户

chown postgres /data/postgre/data/

7.切换postgres用户,并初始化数据库
参数解释,根据需要设置
-D 指定数据库数据位置。必传。也可以设置环境变量PGDATA来替换-D选项。
-U 选择数据库superuser的用户名。这默认为运行initdb的用户的名称。
-W 对于新的超级用户提示输入口令
-E 指定数据库编码,一般为UTF8。这也是您稍后创建的任何数据库的默认编码

cd /usr/local/postgre14/bin/
su postgres
./initdb -E UTF8 -D /data/postgre/data/

8.如果看到以下就说明成功了:

成功截图

9.启动、重启命令:

./pg_ctl -D /data/postgre/data/ start
./pg_ctl -D /data/postgre/data/ restart

10.启动成功截图,并且可以使用psql进入数据库

在这里插入图片描述

3.3.3 配置远程访问(如果需要安装smlar插件可以先进行4部分)

1.修改数据库访问密码

psql
alter user postgres with encrypted password '123456';
exit

2.修改连接权限及打开密码校验

vi /data/postgre/data/postgresql.conf

添加如下内容,如果不修改的话,则客户端只能通过数据库服务器的环路地址127.0.0.1来访问数据库,不能使用服务器的对外IP地址来访问。也就是说,这个数据库只对本机提供服务,其它任何机器都访问不了这个数据库。

#监听所有访问,修改连接权限
listen_address='*'
#密码验证开启
password_encryption = on

可以使用直接输入/listen查找然后进行添加。
添加内容如下:

添加监听端口
密码校验打开

3.打开所有ip可连接

vi /data/postgre/data/pg_hba.conf

最后一行添加内容如下:意义为表示当前数据库服务器,对使用IPV4地址的客户端机器,允许其通过任意IP地址,通过任意数据库用户发起对该数据库服务器上的任意数据库的访问,但是必须得提供数据库用户密码。其认证方式,是通过MD5加密认证的,将md5 改成trust则表示可以不使用密码登录。

host all all 0.0.0.0/0 md5

4.重新启动数据库并使用debaver可视化工具测试

cd /usr/local/postgre14/bin/
./pg_ctl -D /data/postgre/data/ restart

5.创建数据库和用户

create database smtest;
create user potato with password '123456';
grant all privileges on database smtest  to potato;

6.配置进行连接

如果连接不成功,可能是配置暂未生效,建议重启一下centos,然后启动postgresql数据库
连接成功截图

3.3.4 设置postgresql自启

细心的你会发现,如果重启了centos之后,postgresql是不会自动启动的,还得使用启动命令启动,如果设置一下开机自启,那么就可以省很多事。
这里使用centos 7 的自启,我以前对linux系统自启也感觉很迷,有些时候设置有效,但是有些时候设置无效,今天就用centos 7 特有的进行设置

1.创建系统自启文件

cd /usr/lib/systemd/system
touch postgresql.service
vi postgresql.service

添加内容如下:

[Unit]
Description=PostgreSQL database server
After=network.target

[Service]
Type=forking

User=postgres
Group=postgres

# Port number for server to listen on
Environment=PGPORT=5432

# Location of database directory
Environment=PGDATA=/data/postgre/data/

# Where to send early-startup messages from the server (before the logging
# options of postgresql.conf take effect)
# This is normally controlled by the global default set by systemd
# StandardOutput=syslog

# Disable OOM kill on the postmaster
OOMScoreAdjust=-1000

#ExecStartPre=/usr/local/postgre14/bin/postgresql-check-db-dir ${PGDATA}
ExecStart=/usr/local/postgre14/bin/pg_ctl start -D ${PGDATA} -s -o "-p ${PGPORT}" -w -t 300
ExecStop=/usr/local/postgre14/bin/pg_ctl stop -D ${PGDATA} -s -m fast
ExecReload=/usr/local/postgre14/bin/pg_ctl reload -D ${PGDATA} -s

# Give a reasonable amount of time for the server to start up/shut down
TimeoutSec=300

[Install]
WantedBy=multi-user.target

其中一些注释很明显了,user就是启动这个命令使用的用户,Enviroment相当于变量定义,PGPORT就是端口,PGDATA就是数据库文件路径,定义了start、Stop、Reload等操作

2.修改权限

chmod 754 postgresql.service

3.设置开机自启

systemctl enable postgresql.service

设置了之后,可以重启centos之后看服务是否自启成功;

4.一些其他命令

启动某服务:

systemctl  start  postgresql.service

停止某服务:

systemctl stop postgresql.service

重启某服务:

systemctl restart postgresql.service
service postgresql restart

使某服务自动启动(如tomcat服务):

systemctl enable postgresql.service

使某服务不自动启动:

systemctl disable postgresql.service

检查服务状态:

systemctl   status  postgresql.service (服务详细信息)
systemctl   is-active postgresql.service(仅显示是否Active)

比如查看状态
查看postgresql.service的状态

显示所有已启动的服务:

systemctl   list-units --type=service

centos自启相关参考自Centos7下源编译安装Postgresql 并设置开机自动启动postgresql.serivce 服务相关研究

3.3可能出现的报错以及解决方案

1.| yum -y install readline-devel
2.| yum -y install zlib-devel

3.3.1 缺少readline

具体报错如下
可使用命令1进行安装(这是基本的软件,可以使用傻瓜安装的方式)

缺少readline

3.3.2 缺少zlib

具体报错如下
可使用命令2进行安装(这是基本的软件,可以使用傻瓜安装的方式)

缺少zlib

4.SMLAR插件安装

4.1 SMLAR插件说明

smlar插件阿里云官方参考文档

4.2 SMLAR插件安装

安装需要在

cd /usr/local/smlar
git clone git://sigaev.ru/smlar
cd smlar
USE_PGXS=1 make
USE_PGXS=1 make install

可以看到装成功了哦
安装成功
感谢这个博客给了我很大的帮助PostgreSQL扩展之smlar

4.3 SMLAR插件测试

参考smlar项目readme


网站公告

欢迎关注微信公众号

今日签到

点亮在社区的每一天
签到