zoukankan      html  css  js  c++  java
  • 【PG数据库】PG数据库的安装及连接方法

    一.PostgreSQL简介

    PostgrepSQL是一种对象关系型数据库管理系统。

    二.PostgreSQL环境的安装和配置

    2.1源码的下载

    PostgreSQL 14.0源码可以从PostgreSQL官网:https://www.postgresql.org/download/ 的下载区获取。获取之后将其解压。

    源码目录内容,如下图所示:

     

    2.2 环境配置

    安装之前首先为系统配置环境,这个过程通过运行上图中的configure脚本文件即可,命令如下:

    ./configure

    注意:安装的时候,遇到两个问题,新环境高频出现,可以通过最后一章中的方法进行解决。

    2.3 编译

    配置好环境变量之后,对源码进行编译。2.1图中,可以看到已经有完整的makefile文件,在目录下执行下面的命令,进行编译:

    make clean all

    编译过程大约持续5~30min

    2.4 回归测试

    如果想在安装文件前测试新编译的服务器,那么可以在这个时候运行回归测试。回归测试是一个用于验证PostgreSQL在你的系统上是否按照开发人员设想的那样运行的测试套件。通过下面命令执行:

    make check

    如果执行结果如下,代表检查通过:

     

    注意:这个命令只能在非特权用户下运行,不能在root权限下运行

    2.5 安装、卸载、清理文件

    1)安装

    安装PostgreSQL,需要输入下面的命令:

    sudo make install

    由于install命令需要在root权限下执行,所以需要按上面的命令执行。

    2)卸载

    如果想要卸载安装,则执行下面的命令即可,需要注意此命令不会删除任何创建出来的目录:

    sudo make uninstall

    (3)清理

    编译之前可以通过make clean命令,将之前的编译文件进行删除,避免对后续的编译产生影响。

    2.6 安装后进行设置

    2.6.1 创建用户

    root用户不能启动postgresql,所以需要创建一个普通用户来启动数据库,如下图所以,创建用户并设置登录口令。注意:下面两条命令均需在root权限下执行。

    命令1$sudo useradd postgres

    没有其他输出,代表成功。

    命令2$sudo passwd postgres

    输入类似于这样的密码,可以成功ht3pki2008!!

    如下图所示:

     

    2.6.2 设定权限

    postgresql目录下创建目录data(数据库存储)和log(日志存储),然后将postgresql的目录权限全部赋予给postgres用户。

    命令1$sudo mkdir /usr/local/pgsql/data

    命令2$sudo mkdir /usr/local/pgsql/log

    命令3$sudo chown -R postgres:postgres /usr/local/pgsql

    2.6.3 共享库

    在一些有共享库的系统里,需要告知本地系统如何找到新安装的共享库。设置共享库的搜索路径的方法因平台而异,本机是Linux系统,因设置命令需要root权限,故在安装之后运行下面命令进行设置:

    sudo /sbin/ldconfig /usr/local/pgsql/lib

    设置后,可以在运行时,让链接器更快地找到共享库。

    2.6.4 环境变量

    1. PG添加到环境变量

    本机PG安装路径为/usr/local/pgsql,安装到此目录或者其他默认不在搜索路径中的地方,应该在本地的PATH环境变量里面增加一个/usr/local/pgsql/bin

    上面的操作非必须,但可以在使用PG更方便。

    将下面的几行加到shell启动文件即可,如:~./bash_profile()如果想影响所有用户就放在/etc/profile):

    export PGDATA=/usr/local/pgsql/data

    export PGHOME=/usr/local/pgsql

    export PATH=$PGHOME/bin:$PATH

    注意:/etc/profile文件需要root权限操作,所以在修改的时候可以使用sudo vim /etc/profile,打开文件修改。

    2. man文档添加到环境变量

    为了让系统找到man文档,将下面的内容添加到shell启动文件里:

    MANPATH=/usr/local/pgsql/share/man:$MANPATH

    export MANPATH

    修改完成后,使用下面的命令使其生效:

    命令1sudo -s(切换到root权限)

      命令2source /etc/profile

    2.6.5 初始化数据库

    切换为postgres用户,使用initdb --help可以看到初始化数据库的帮助信息,如下图所示:

    命令1$initdb --help

     

    图中红框中文字所示,由于之前在配置文件中已经设定了环境变量PGDATA,因此可以直接使用命令initdb来完成数据库初始化操作。

    首先,切换到postgres用户,命令:#su - postgres

    然后,初始化数据库,命令:$initdb

    如果出现下面的结果,代表初始化成功:

    此时,可以发现/usr/local/pgsql/data中已经有文件了,代表已经初始化成功。

    2.6.6 配置数据库

    首先,进入/usr/local/pgsql/data目录,使用命令vim pg_hba.conf,配置对数据库的访问控制(设置为可以通过密码访问)。如下图所示:

     

    然后,使用命令vim postgresql.conf,配置数据库参数(设置服务器监听整个网络,设置端口号为5432)。如下图所示:

     

    2.6.7 关闭防火墙(root用户)

    使用命令systemctl status firewalld.service查看防火墙状态,如图13所示:

     

    通过上图可知,防火墙属于关闭状态。

    如果查看到防火墙处于开启状态,如下图:

     

    若想将其关闭,使用命令sudo systemctl stop firewalld.service关闭防火墙。(ps:使用命令systemctl disable firewalld.service,可以停用防火墙开机自启)

    2.6.8 配置系统服务(root用户)

    进入postgresql源码包的解压目录(本文为/home/10318001@zte.intra/Desktop/王泽辉的工作空间/postgreSQL源码/postgresql-14.0),执行命令

    cp contrib/start-scripts/linux /etc/init.d/postgresql

    然后执行vim /etc/init.d/postgresql,查看配置信息是否如下图所示,若不同,请按下面的方式配置:

     

    然后使用命令chmod +x /etc/init.d/postgresql(需在root权限下执行),赋予该文件执行权限。另外,还可以使用命令chkconfig --add postgresql(需在root权限下执行),设置服务开机自启。

    2.6.9 启动及链接数据库

    1. 启动数据库服务

    使用命令#service postgresql start(需要root权限),启动数据库服务。可以通过命令:$sudo ps -ef | grep postgres,查看postgres相关进程,如下图所示:

     

     

    3. 链接数据库

    通过上述方法启动数据库后,便可通过postgresql自带的客户端工具psql来进行链接(psql二进制文件在/usr/local/pgsql/bin,因为已经配置环境变量,所以全局也可执行)。

    请按如下的步骤进行操作:

    (1) 在postgresql用户下直接输入命令:$psql,看到版本信息则说明链接成功。

    (2) 然后,使用”\password,设置密码。如下图所示:

     

    (3) 验证非本地客户端工具的链接。

    最后也是最重要的一步,就是验证非本地客户端工具的连接。本文选择的工具是Navicat Premium,在主机(Window10)打开Navicat与虚拟机中的postgresql服务器进行连接测试,如下图所示:

     

    (4) 停止数据库连接服务

    若想停止数据库服务,可以在root权限下执行命令:#service postgresql stop

    总结:以上就是linux环境下源码编译安装PostgreSQL的全过程。

    十.错误及解决办法

    10.1 安装PG时,执行configure脚本报错

    问题一:

    1. 安装前,执行configure配置文件时,报下面错误

    configure: error: readline library not found
    If you have readline already installed, see config.log for details on the
    failure.  It is possible the compiler isnt looking in the proper directory.
    Use --without-readline to disable readline support.

    2. 解决办法

    (1)根据提示是没有安装readline包,首先检查是否安装readline

     

    由上可知,系统中已经安装了readline包。

    (2)通过yum查询readline包,观察都有哪些相关的包

    由上可知,readline-devel.i686readline-devel43.i386可能未安装,尝试安装readline-devel包。

    3)尝试安装readline-devel

    注意,执行这个安装命令,需要在root权限下安装,用下面命令即可。

     

    显示“完毕”之后,即代表安装完成。

    (3)再次执行configure脚本,即可通过。

    问题二:

    1. 安装前执行configure脚本,报下面的错误

    checking for inflate in -lz... no

    configure: error: zlib library not found

    If you have zlib already installed, see config.log for details on the

    failure.  It is possible the compiler isn't looking in the proper directory.

    Use --without-zlib to disable zlib support.

    2. 解决办法

    (1)首先检查系统中是否安装zlib

     

    (2)通过yum查看zlib包,查看哪些包缺失

     

    通过上述查看可知,zlib-devel需要安装。

    (3)安装zlib-devel

    由于安装需要root权限,采用下面的命令安装即可,如下图:

     

    4)继续执行configure脚本,执行成功,问题得到解决。

  • 相关阅读:
    Java SE 8 Archive Downloads (JDK 8u202 and earlier)
    MySql.Data.MySqlClient.MySqlProtocolException:“Packet received out-of-order. Expected 1; got 2.”
    docker image 镜像导入导出
    Windows设置国内源阿里云镜像加速与离线安装pip包的方法
    Python time strptime() 函数根据指定的格式把一个时间字符串解析为时间元组
    centos7下vs code编辑器字体与windows版本同步设置-安装中文字体,美化vscode
    windows10 pip install MySQL-python mysqlclient
    Failed to start docker.service: Unit not found.
    tcping测试端口是否畅通
    the type initializer for 'system.drawingcore.gdiplus' threw an exception
  • 原文地址:https://www.cnblogs.com/coreLeo/p/15633054.html
Copyright © 2011-2022 走看看