0%

Postgresql数据库学习

前言

尝试记录一下自己关于学习postgresql的一些心路旅程

请注意:如果你自身对Linux系统不太了解,请不要尝试安装Postgresql,而是转向学习Mysql

Postgresql的安装很有可能给新手小白的服务器遭受到网络挖矿病毒的侵扰(深有体会),因此需要对Linux有一定的基础才可进行继续学习

目录

[TOC]

服务器配置

  • 硬件:阿里云ECS 1核2G
  • 软件:Ubuntu20.04 64位

相关参考文献

过程

安装你的Postgresql

根据官网教程所示:

image-20220322104525984

因此,安装流程如下:

  1. 创建文件存储库配置:

    sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

  2. 导入存储库签名密钥:

    wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

  3. 更新apt软件源

    sudo apt update

  4. 下载安装Postgresql

    sudo apt -y install postgresql

如果你需要的并不是最新版的Postgresql,则可以通过输入 postgresql-12来替换掉上文提到的postgresql进行指定版本安装

至此,数据库便已经安装到你的服务器上了

进入到你的Postgresql中

有一个很好的命令可以去查看你的数据库是否处于运行状态:

sudo systemctl status postgresql

当其显示为绿色的时候你的数据库便处在运行当中

image-20220322110434111

因此,只需要输入:

sudo -u postgres psql便可成功进入到数据库中

image-20220322110522926

命令下面的那条语句表示我没有权限进入到/root目录中,可以不需要管

至此,你便进入到了数据库中,并可以进行下一步操作

*远程访问你的数据库

在实际环境中,你的数据库可能不仅仅供自身内部访问,也可能需要通过外部访问来获取你的数据或者进一步调配,Postgresql中默认关闭远程访问权限,因此需要进行相关操作,将其开启远程访问,方便后续操作

为了防止数据库容易遭到入侵,因此这里额外创建一个账户,并为其配置远程访问渠道

  1. 通过上述步骤进入到你的数据库中去

  2. 创建一个新的用户,密码为1234这里用test去表示:

    create user test with password '1234';

  3. 创建一个数据库,并将其划分到它的管辖中去:

    CREATE DATABASE testdb OWNER test;

    GRANT ALL PRIVILEGES ON DATABASE testdb TO test;

  4. 退出数据库,进入后续配置环节:

    \q

  5. 在linux中创建一个普通账户,用户名与数据库创建的同名:

    sudo adduser test

    sudo passwd test

    :question:不确定是否密码要求一致,这里暂时不进行验证,如果后续有留言想要知道,再去验证解决

  6. 修改配置文件使其支持远程访问(以下内容讲解简化)

    1. cd /etc/postgresql/12/main/

    2. vim postgresql.conf

    3. 找到大概第60行中的 listen_addresses = 'localhost' ,将其更改为:listen_addresses = '*'

      让数据库监听所有IP地址的访问信息(如果为了安全,在确保IP地址一定的情况下,可以直接更改为相应的IP地址即可)

    4. 修改同文件夹下的pg_hba.conf文件,在文件第一行添加如下 内容:

      host all all 0.0.0.0/0 md5

      (并不推荐⬆)(推荐⬇)

      host all test 0.0.0.0/0 md5

      允许过多的用户进行访问可能会出现问题,因此不建议

      内容讲解

      TYPE DATABASE USER ADDRESS METHOD

      type【连接方式】

      • local

        这条记录匹配企图通过 Unix 域套接字进行的连接。没有这种类型的记录,就不允许 Unix 域套接字的连接。

      • host

        这条记录匹配企图通过 TCP/IP 进行的连接。host记录匹配 SSL和非SSL的连接请求。

      • hostssl

        这条记录匹配企图使用 TCP/IP 的 SSL 连接。但必须是使用SSL加密的连接。

      • hostnossl

        这条记录与hostssl行为相反:它只匹配那些在 TCP/IP 上不使用SSL的连接请求。

      database【声明记录所匹配的数据库名称】

      • all

        匹配所有的数据库

      • sameuser

        如果被请求的数据库和请求的用户同名,则匹配

      • samerole

        请求的用户必须是一个与数据库同名的角色中的成员

      • replication

        如果请求一个复制链接, 则匹配(注意复制链接不表示任何特定的数据库)。{在其它情况里,这就是一个特定的 PostgreSQL数据库名字。可以通过用逗号分隔的方法声明多个数据库, 也可以通过前缀@来声明一个包含数据库名的文件。}

      user【为这条记录声明所匹配的数据库用户】

      • all

        表示匹配所有用户

      • 其他

        否则,此值就是特定数据库用户的名字或者是一个前缀+的组名称

      ……相关内容请访问:pg_hba.conf中文手册

至此,在第三方软件或者其他机器上使用数据库IP、新创建的用户名及密码,便可以连接到数据库中进行访问创建

尾言

随着后续程序的完善以及学习,相关内容会继续更新,如需其他方面的知识,欢迎留言催更

-------------我也是有底线的哦如需更多,欢迎打赏-------------