• linux源码安装postgresql以及smlar插件


    1.环境说明

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

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

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

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

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

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

    3.3.2 postgresql配置

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

    adduser postgres
    
    • 1

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

    vi ~/.bash_profile
    
    • 1

    3.添加内容如下:

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

    4.使环境变量生效

    source ~/.bash_profile
    
    • 1

    5.创建数据库数据目录

    mkdir -p /data/postgre/data
    
    • 1

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

    chown postgres /data/postgre/data/
    
    • 1

    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/
    
    • 1
    • 2
    • 3

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

    成功截图

    9.启动、重启命令:

    ./pg_ctl -D /data/postgre/data/ start
    ./pg_ctl -D /data/postgre/data/ restart
    
    • 1
    • 2

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

    在这里插入图片描述

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

    1.修改数据库访问密码

    psql
    alter user postgres with encrypted password '123456';
    exit
    
    • 1
    • 2
    • 3

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

    vi /data/postgre/data/postgresql.conf
    
    • 1

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

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

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

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

    3.打开所有ip可连接

    vi /data/pgsql/zhdc/pg_hba.conf
    
    • 1

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

    host all all 0.0.0.0/0 md5
    
    • 1

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

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

    5.创建数据库和用户

    create database smtest;
    create user potato with password '123456';
    grant all privileges on database smtest  to potato;
    
    • 1
    • 2
    • 3

    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
    
    • 1
    • 2
    • 3

    添加内容如下:

    [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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34

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

    2.修改权限

    chmod 754 postgresql.service
    
    • 1

    3.设置开机自启

    systemctl enable postgresql.service
    
    • 1

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

    4.一些其他命令

    启动某服务:

    systemctl  start  postgresql.service
    
    • 1

    停止某服务:

    systemctl stop postgresql.service
    
    • 1

    重启某服务:

    systemctl restart postgresql.service
    service postgresql restart
    
    • 1
    • 2

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

    systemctl enable postgresql.service
    
    • 1

    使某服务不自动启动:

    systemctl disable postgresql.service
    
    • 1

    检查服务状态:

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

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

    显示所有已启动的服务:

    systemctl   list-units --type=service
    
    • 1

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

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

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

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5

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

    4.3 SMLAR插件测试

    参考smlar项目readme

  • 相关阅读:
    C++核心编程——1 内存分区模型
    Vue中实现清空数组和清空el-table
    Laravel使用Queue队列的技巧汇总
    python基础(一)、列表的创建和操作
    【pytorch】目标检测:一文搞懂如何利用kaggle训练yolov5模型
    【028】仿猫眼、淘票票的电影后台管理和售票系统系统(含后台管理)(含源码、数据库、运行教程)
    应对Redis缓存污染问题,你应该知道这些内容
    AI网络爬虫:对网页指定区域批量截图
    暴力算法 --- 莫队
    验证流程--验证层次
  • 原文地址:https://blog.csdn.net/qq_39187538/article/details/126253227