前言
尝试记录一下自己关于学习postgresql的一些心路旅程
请注意:如果你自身对Linux系统不太了解,请不要尝试安装Postgresql,而是转向学习Mysql
Postgresql的安装很有可能给新手小白的服务器遭受到网络挖矿病毒的侵扰(深有体会),因此需要对Linux有一定的基础才可进行继续学习
目录
[TOC]
服务器配置
- 硬件:阿里云ECS 1核2G
- 软件:Ubuntu20.04 64位
相关参考文献
过程
安装你的Postgresql
根据官网教程所示:
因此,安装流程如下:
创建文件存储库配置:
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
导入存储库签名密钥:
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
更新apt软件源
sudo apt update
下载安装Postgresql
sudo apt -y install postgresql
如果你需要的并不是最新版的Postgresql,则可以通过输入
postgresql-12
来替换掉上文提到的postgresql进行指定版本安装
至此,数据库便已经安装到你的服务器上了
进入到你的Postgresql中
有一个很好的命令可以去查看你的数据库是否处于运行状态:
sudo systemctl status postgresql
当其显示为绿色的时候你的数据库便处在运行当中
因此,只需要输入:
sudo -u postgres psql
便可成功进入到数据库中
命令下面的那条语句表示我没有权限进入到/root目录中,可以不需要管
至此,你便进入到了数据库中,并可以进行下一步操作
*远程访问你的数据库
在实际环境中,你的数据库可能不仅仅供自身内部访问,也可能需要通过外部访问来获取你的数据或者进一步调配,Postgresql中默认关闭远程访问权限,因此需要进行相关操作,将其开启远程访问,方便后续操作
为了防止数据库容易遭到入侵,因此这里额外创建一个账户,并为其配置远程访问渠道
通过上述步骤进入到你的数据库中去
创建一个新的用户,密码为
1234
这里用test去表示:create user test with password '1234';
创建一个数据库,并将其划分到它的管辖中去:
CREATE DATABASE testdb OWNER test;
GRANT ALL PRIVILEGES ON DATABASE testdb TO test;
退出数据库,进入后续配置环节:
\q
在linux中创建一个普通账户,用户名与数据库创建的同名:
sudo adduser test
sudo passwd test
:question:不确定是否密码要求一致,这里暂时不进行验证,如果后续有留言想要知道,再去验证解决
修改配置文件使其支持远程访问(以下内容讲解简化)
cd /etc/postgresql/12/main/
vim postgresql.conf
找到大概第60行中的
listen_addresses = 'localhost'
,将其更改为:listen_addresses = '*'
让数据库监听所有IP地址的访问信息(如果为了安全,在确保IP地址一定的情况下,可以直接更改为相应的IP地址即可)
修改同文件夹下的
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、新创建的用户名及密码,便可以连接到数据库中进行访问创建
尾言
随着后续程序的完善以及学习,相关内容会继续更新,如需其他方面的知识,欢迎留言催更