PostgreSQL 学习笔记 (一) 数据库的安装与环境配置

由于在学校针对作业和毕设 MySQL已经很够用了,因此也没有做更多对数据库的功课,只知道 Oracle数据库适合企业,MySQL适合小型项目,但是工作以后的第一个项目就接触的是陌生的 PostgreSQL数据库,才发现原来还有这么好用的开源数据库,正好趁武汉肺炎这个被动假期时间把它好好学一遍。


主要书籍是 《PostgreSQL修炼之道:从小工到专家
JD链接:PostgreSQL修炼之道:从小工到专家
书籍
PDF下载(Google Drive ):POSTGRESQL修炼之道从小工到专家.pdf
无论如何工具书还是入正比较好,个人是因为快递延缓发货,一边等书一边PDF先学习起来。况且只在读完两章后就感叹唐成老师这本书写的真的很好,对 PostgreSQl的特性和基础SQL语句的解释都很详细,即使是从没这方面基础的也可以收获很多。


关于 PostgreSQL的介绍,书中已经写的很详细了,就不再做过多的赘述。
吸引我的地方无非几点:

  • 免费开源(最重要的原因)
  • 有稳定的更新和问题反馈渠道
  • 占用低,即使是阿里的轻量都能跑 Django+PostgreSQL
  • Navicat for PostgreSQL 价格低,150/3月,1000买断,真香

而再看使用上的优点则太多了:

  • 支持数据库中创建对象,对多个项目用同数据库的太友好!
  • 支持列表 list的存取
  • 支持 JSON、xml类型数据的存取
  • INSERT INTO table VALUES () ON CONFLICT() DO UPDATE/NOTHING 约束时处理(专属神器,太好用了,不知道省了多少时间)

列举几个我没有系统学习之前,用的时候发现的优点,我想在其中总有一个点会戳中后端开发人员的心。

1、直接开始吧那就!首先当然是 PostgreSQL的安装。
PostgreSQL支持 Linux、Mac OS和 Windows下安装,而且方法相当简单,由于我是为了部署项目数据库,因此这里以 Centos7为例。
注:这里安装的是9.2.24版本的,如果需要10+版本的可参考这个博文 Centos7.6安装PostgreSQL10
运行

yum install postgresql-server.x86_64

安装
当然在安装前可以先运行

psql --version

查看下云服务等是否自带了低版本 Postgresql数据库。
安装之后,记得先初使用化数据库再启动

service postgresql initdb
service postgresql start
service postgresql status

显示running就说明数据库已经安装完成了。
数据库

2、登录到数据库。
PostgreSQL在安装时默认会添加用户postgres,运行

su - postgres

先切换到postgres用户下,再输入

psql

就进入到 PostgreSQL数据库中了。
进入数据库

这里推荐先把postgre用户的密码改掉:

ALTER USER postgres WITH PASSWORD <password>;

注意:这里的命令是在数据库中运行的,即 postgres=#: 下。

3、远程连接,如果你要在 Navicat等工具中使用这个数据库,还需要做些配置。
首先是 postgresql.conf 文件的配置

vi /var/lib/psql/data/postgresql.conf

修改

listen_addresses = '*'  
port = 5432
max_connections = 100

修改

保存退出即可。
然后再修改 pg_hba.conf 这个文件,路径和刚刚相同

vi /var/lib/psql/data/pg_hba.conf

在最后添加这条

host    all         all         0.0.0.0/0           md5

当然开放访问的 IP 视自己情况而定,这里因为腾讯云服务器安全组全开而且机器连防火墙都没开我也就自暴自弃了,后面会再专做一个项目部署时端口等的初步设置以保障最基础的安全性。
2修改

都保存以后重启 PostgreSQL服务,再尝试远程连接吧!

service postgresql restart

连接成功

至此,PostgreSQL的学习环境就已经安装完成了,如果想升级为开发环境,就像之前强调的一是防火墙要开,端口要适当开放;二是版本最好升级到10+,以使用最新的特性。

附上书的目录:
目录1
目录2
目录3
基础篇涉及到所有支持存储的数据类型,并且所有 PostgreSQL的基础操作也都做了详解,是肯定要认真学习并做好笔记的。
提高篇的 PostgreSQL特有正则表达式很值得学习,索引、序列和锁由于自身之前用的不多,也再过一遍好了。
而之后的数据库优化和第三方开源软件及架构在这次学习中只会做了解,在项目进行或是完成后再结合实际情况学习可能效果会更好。