PostgreSQL 安装与入门

一、简介

PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),是以加州大学计算机系开发的POSTGRES,4.2版本为基础的对象关系型数据库管理系统。POSTGRES的许多领先概念只是在比较迟的时候才出现在商业网站数据库中。PostgreSQL支持大部分的SQL标准并且提供了很多其他现代特性,如复杂查询、外键、触发器、视图、事务完整性、多版本并发控制等。同样,PostgreSQL也可以用许多方法扩展,例如通过增加新的数据类型、函数、操作符、聚集函数、索引方法、过程语言等。另外,因为许可证的灵活,任何人都可以以任何目的免费使用、修改和分发PostgreSQL。

二、PostgreSQL 与 MySQL的区别

1)PostgreSQL相对于MySQL的优势

1、在SQL的标准实现上要比MySQL完善,而且功能实现比较严谨;
2、存储过程的功能支持要比MySQL好,具备本地缓存执行计划的能力;
3、对表连接支持较完整,优化器的功能较完整,支持的索引类型很多,复杂查询能力较强;
4、PG主表采用堆表存放,MySQL采用索引组织表,能够支持比MySQL更大的数据量。
5、PG的主备复制属于物理复制,相对于MySQL基于binlog的逻辑复制,数据的一致性更加可靠,复制性能更高,对主机性能的影响也更小。
6、MySQL的存储引擎插件化机制,存在锁机制复杂影响并发的问题,而PG不存在。

2) MySQL相对于PG的优势:

1、innodb的基于回滚段实现的MVCC机制,相对PG新老数据一起存放的基于XID的MVCC机制,是占优的。新老数据一起存放,需要定时触 发VACUUM,会带来多余的IO和数据库对象加锁开销,引起数据库整体的并发能力下降。而且VACUUM清理不及时,还可能会引发数据膨胀;
2、MySQL采用索引组织表,这种存储方式非常适合基于主键匹配的查询、删改操作,但是对表结构设计存在约束;
3、MySQL的优化器较简单,系统表、运算符、数据类型的实现都很精简,非常适合简单的查询操作;
4、MySQL分区表的实现要优于PG的基于继承表的分区实现,主要体现在分区个数达到上千上万后的处理性能差异较大。
5、MySQL的存储引擎插件化机制,使得它的应用场景更加广泛,比如除了innodb适合事务处理场景外,myisam适合静态数据的查询场景。
3)、总体上来说,开源数据库都不是很完善,商业数据库oracle在架构和功能方面都还是完善很多的。从应用场景来说,PG更加适合严格的企业应用场景(比如金融、电信、ERP、CRM),而MySQL更加适合业务逻辑相对简单、数据可靠性要求较低的互联网场景(比如google、facebook、alibaba)。

以上摘自:https://www.cnblogs.com/sbj-dawn/p/8053549.html

三、PostgreSQL 安装

1、添加 yum
yum install https://download.postgresql.org/pub/repos/yum/9.5/redhat/rhel-7-x86_64/pgdg-centos95-9.5-3.noarch.rpm
2、安装 PostgreSQL 9.5
yum install postgresql95 postgresql95-server
3、初始化数据库
/usr/pgsql-9.5/bin/postgresql95-setup initdb
4、设置开机自启动(可忽略)
systemctl enable postgresql-9.5.service
5、启动服务
systemctl start postgresql-9.5.service
6、查看服务状态
systemctl status postgresql-9.5.service
7、查看版本
psql --version
8、开启远程访问
vi /var/lib/pgsql/9.5/data/postgresql.conf
修改 #listen_addresses = 'localhost'  为  listen_addresses='*'
9、添加信任IP和服务器连接
vi /var/lib/pgsql/9.5/data/pg_hba.conf
# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# 这里第三个 all 可以指定为具体的IP,这里是所有都可以连接
host     all             all             all            trust

详细配置原理请参考:https://www.cnblogs.com/flying-tiger/p/5983588.html

10、重启服务
systemctl restart postgresql-9.5.service
11、修改 postgres 用户密码

PostgreSQL数据库创建一个postgres用户作为数据库的管理员,密码随机,所以需要修改密码

#删除用户密码
sudo passwd -d postgres
#设置用户密码,根据提示输入密码
sudo -u postgres passwd
#使用postgres 用户登录,输入密码即可
su postgres
12、修改 PostgreSQL 数据库密码
#进入客户端
psql
#修改密码
ALTER USER postgres WITH PASSWORD 'postgres'
#退出
\q
13、卸载 yum (如果你需要卸载)
yum remove postgresql*
14、安装管理工具 Navicat for PostgreSQL 就可以远程访问了。

默认用户名和密码都为 postgres
在这里插入图片描述

15、常见错误及解决方法

1、psql: FATAL: Ident authentication failed for user “psqluser”
原因:postgresql 配置文件 pg_hba.conf中没有配置信任该服务器ip导致报错。
https://blog.csdn.net/Mr_EvanChen/article/details/83626250
https://www.cnblogs.com/flying-tiger/p/5983588.html

2、FATAL: no pg_hba.conf entry for host
https://blog.csdn.net/zhengbo0/article/details/17911169/

16、资料

官网:https://www.cnblogs.com/shhnwangjian/p/8392050.html
配置文件 pg_hba.conf 说明:https://www.cnblogs.com/flying-tiger/p/5983588.html

ABOUT

我的 Github:Github
CSDN: CSDN
个人网站: sirius blog
E-mail: [email protected]

推荐阅读
史上最全,最完美的 JAVA 技术体系思维导图总结,没有之一!
全站导航 | 我为什么要写这些博客?

发布了81 篇原创文章 · 获赞 373 · 访问量 27万+

猜你喜欢

转载自blog.csdn.net/Sirius_hly/article/details/103426482