PostgreSQL 入门

文章目录

  • PostgreSQL介绍
  • PostgreSQL和MySQL的区别
  • PostgreSQL的安装
  • PostgreSQL的配置
    • 远程连接配置
    • 配置数据库的日志
  • PostgreSQL基本操作
    • 用户操作
    • 权限操作
  • 图形化界面安装
  • 总结

PostgreSQL介绍

PostgreSQL是一个功能强大的 开源 的关系型数据库,底层基于C实现。其开源协议和Linux内核版本的开源协议是一样的,简单来说就是:可以对PostgreSQL进行一些封装,然后商业化是收费。

PostgreSQL之前叫Ingres,后面为了解决一些ingres中的一些问题,作为后面的ingres,就起名叫PostgreSQL。

PostgreSQL版本迭代的速度比较快,现在最新的正式的发布版本,已经到了15.RELEASE。

PostgreSQL的版本选择一般有两种:

  • 如果为了稳定的运行,推荐使用12.x版本。
  • 如果想体验新特性,推荐使用14.x版本。

PostgreSQL的官方地址:https://www.postgresql.org/

PostgreSQL的国内社区:http://www.postgres.cn/v2/home

PostgreSQL和MySQL的区别

技术没有好坏之分,只是看一下是否符合你的业务,能否解决你的业务需求。其次也要查看社区的活跃度以及更新的频次。

MySQL不支持的几点内容:

  • MySQL的数据类型不够丰富。
  • MySQL不支持序列概念,Sequence。
  • 使用MySQL时,网上比较好用的插件。
  • MySQL的性能优化监控工具不是很多,定位问题的成本是比较高。
  • MySQL的主从复制没有一个官方的同步策略,同步问题难以解决。
  • MySQL虽然开源,但是不够彻底。

PostgreSQL相对MySQL上述问题的特点:

  • PostgreSQL的数据类型丰富。
  • PostgreSQL是有序列的概念的。
  • PostgreSQL的插件特别丰富。
  • PostgreSQL支持主从复制的同步操作,可以实现数据的0丢失。
  • PostgreSQL的MVCC实现和MySQL不大一样。PostgreSQL一行数据会存储多个版本。最多可以存储40亿个事务版本。

PostgreSQL的安装

推荐在Linux中安装,Linux的版本尽量使用7.x版本,最好是7.6或者是7.8版本。根据官网的引导进行安装:

image.png

填写版本、平台等信息。拿到命令直接执行

image.png

# 下载PGSQL的rpm包
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
# 安装PGSQL12的软件程序,需要下载,需要等一会,一般不会失败,即便失败,他也会重新帮你找镜像
sudo yum install -y postgresql12-server
# 数据库初始化
sudo /usr/pgsql-12/bin/postgresql-12-setup initdb
# 设置开启启动项,并设置为开启自行启动
sudo systemctl enable postgresql-12
# 启动PGSQL
sudo systemctl start postgresql-12

这种方式基本不会出错。如果出错,可能是以下几个问题:

  • Linux没有连接外网
  • Linux中的5432端口,可能被占用了

PostgreSQL不推荐使用root管理,在安装成功后,默认会创建一个用户:postgres ,进行操作时切换到该账户

su postgres

直接输入psql即可进入到postgreSQL提供的客户端

# 进入命令行
psql
# 查看有哪些库,如果是新安装的,有三个库,一个是postgres,template0,template1
\l  

不推荐下载Windows版本去玩

如果非要下载:https://sbp.enterprisedb.com/getfile.jsp?fileid=1258242

PostgreSQL的配置

要关注两个配置信息,一个关于PostgreSQL的远程连接配置以及postgreSQL的日志配置。

PostgreSQL的主要配置放在数据目录下的, postgresql.conf 以及 pg_hba.conf 配置文件

这些配置文件都放在了这个目录下

/var/lib/pgsql/12/data

image.png

上图可以看到,postgreSQL的核心文件,都属于postgres用户,操作的时候,尽可能的别用root用户,容易出坑,尽可能先切换到postgres用户。

远程连接配置

PostgreSQL默认情况下不支持远程连接的,这个跟MySQL几乎一样

  • MySQL给mysql.user追加用户,一般是采用grant的命令。
  • PostgreSQL要基于配置文件修改,才能制定用户是否可以远程连接。

直接去修改pg_hba.conf配置文件

用户以及对应数据库和连接方式的编写模板

image.png

local:代表本地连接,host代表可以指定连接的ADDRESS
database编写数据库名,如果写all,代表所有库都可以连接
user编写连接的用户,可以写all,代表所有用户
address代表那些IP地址可以连接
method加密方式,这块不用过多关注,直接md5
# 如果为了省事,直接来个痛快的配置,允许任意地址的全部用户连接所有数据库
host    all             all             0.0.0.0/0               md5

image.png

为了实现远程连接,除了用户级别的这种配置,还要针对服务级别修改一个配置

服务级别的配置在postgresql.conf

image.png发现默认情况下,PGSQL只允许localhost连接,直接配置为*即可解决问题

image.png

为了生效,一定要重启

# postgres密码不管,直接root用户
sudo systemctl restart postgresql-12

配置数据库的日志

查看postgresql.conf文件

image.png

postgreSQL默认情况下,只保存7天的日志,循环覆盖。

# 代表日志是开启的。
logging_collector = on
# 日志存放的路径,默认放到当前目录下的log里
log_directory = 'log'
# 日志的文件名,默认是postgresql为前缀,星期作为后缀
log_filename = 'postgresql-%a.log'
# 默认一周过后,日志文件会被覆盖
log_truncate_on_rotation = on
# 一天一个日志文件
log_rotation_age = 1d
# 一个日志文件,没有大小限制
log_rotation_size = 0

PostgreSQL基本操作

只在psql命令行(客户端)下,执行了一次\l,查看了所有的库信息

可以直接基于psql查看一些信息,也可以基于psql进入到命令行后,再做具体操作

image.png 命令不用背,需要使用的时候,直接找帮助文档,在psql命令行中,直接输入

\help,即可查看到数据库级别的一些命令
\?,可以查看到服务级别的一些命令

用户操作

构建用户命令

# 区别就是create user默认有连接权限,create role没有,不过可以基于选项去设置
CREATE USER 名称 [ [ WITH ] 选项 [ ... ] ]
create role 名称 [ [ WITH ] 选项 [ ... ] ]

构建一个超级管理员用户

create user root with SUPERUSER PASSWORD 'root';

image.png

编写psql命令尝试去用root用户登录

psql -h 192.168.11.32 -p 5432 -U root -W

这时候会发现光有用户不让登录,得让用户有一个数据库,直接构建一个root库

create database root;

权限操作

权限操作前,要先掌握一下PostgreSQL的逻辑结构

逻辑结构图
image.png

可以看到PostgreSQL一个数据库中有多个schema,在每个schema下都有自己的相应的库表信息,权限粒度会比MySQL更细一些。

在PGSQL中,权限的管理分为很多多层

server、cluster、tablespace级别:这个级别一般是基于pg_hba.conf去配置

database级别:通过命令级别操作,grant

namespace、schema级别:玩的不多……不去多了解这个~~

对象级别:通过grant命令去设置

后面如果需要对database或者是对象级别做权限控制,直接基于grant命令去操作即可

# 查看grant命令
\help grant

图形化界面安装

图形化界面可以连接PGSQL的很多,Navicat(收费),也可以直接使用PostgreSQL官方提供的图形化界面(完全免费)。

下载官方提供的各操作系统的版本,进行傻瓜式安装

image.png

添加一个新的连接

image.png

总结

PostgreSQL其实在国外使用的比较多,国内暂时还是以MySQL为主。但是国内很多国产数据库都是基于PostgreSQL做的二次封装,比如:华为GaussDB还有腾讯的Tbase等等。很多公司原来玩的Oracle,直接平转到PostgreSQL,而且国内的很多云产品都支持PostgreSQL了。

因为开源,有很多做数据迁移的工具,可以让你快速的从MySQL,SQLServer,Oracle直接平转到PostgreSQL中内部,比如pgloader这样的数据迁移工具。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/154856.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

模板初阶学习

✨前言✨ 📘 博客主页:to Keep博客主页 🙆欢迎关注,👍点赞,📝留言评论 ⏳首发时间:2023年11月21日 📨 博主码云地址:博主码云地址 📕参考书籍&…

【刷题专栏—突破思维】LeetCode 138. 随机链表的复制

前言 随机链表的复制涉及到复制一个链表,该链表不仅包含普通的next指针,还包含random指针,该指针指向链表中的任意节点或空节点。 文章目录 原地修改链表 题目链接: LeetCode 138. 随机链表的复制 原地修改链表 题目介绍&#xf…

拖拽场景遇到 iframe 无法拖拽的问题解决方案

描述一个场景:在网页中,分为上下两部分布局,下半部分显示操作日志,下半部分的区域高度是可拖拽调整的,但是如果下半部分嵌入一个 iframe 的时候,往上拖拽可以,但是往下拖拽,一旦到了…

分类问题的评价指标

一、logistic regression logistic regression也叫做对数几率回归。虽然名字是回归,但是不同于linear regression,logistic regression是一种分类学习方法。 同时在深度神经网络中,有一种线性层的输出也叫做logistic,他是被输入…

以太网_寻址

【架构图】 【ipconfig/all】 MAC地址:作用于本地网络,数据包发送到本地交换机或路由器后经判断目的地址是本地网络地址会转发给当前MAC地址对应的网线端口。 IP地址:供路由器寻址,会跟子网掩码进行运算,属于同一网络…

git问题: git@10.18.*.*: Permission denied (publickey,password)

遇到的问题: openSSH版本太高,openssh高版本默认禁止ssh-rsa加密算法,直接换ed25519 执行以下命令: 在.ssh目录下执行:ssh-keygen -t ed25519 -C “youremail.com” ssh-add ~/.ssh/id_ed25519 将id_ed25519.pub添加…

BigDecimal的常见陷阱

文章目录 BigDecimal概述BigDecimal常见陷阱1.使用BigDecimal的构造函数传入浮点数2.使用equals()方法进行数值比较3.使用不正确的舍入模式 总结: BigDecimal概述 BigDecimal 是 Java 中的一个类,用于精确表示和操作任意精度的十进制数。它提供了高精度的…

UE 材质,如何只取0~1之间的值,其余值抛弃

假如0~1,floor为0,abs为0,Saturate为0,1-x为1,很好 假如1~2,floor为1,abs为1,Saturate为1,1-x为0,很好 假如2~3,floor为2,abs为2&am…

软件测试/人工智能丨引领未来:软件测试中的人工智能

在数字化潮流的推动下,软件测试领域正在经历一场革命性的变革,而这场变革的关键推手正是人工智能(AI)。AI的引入不仅加速了测试过程,而且赋予了测试领域新的可能性,将我们带入了一个前所未有的未来。 智能…

【MySQL--->用户管理】

文章目录 [TOC](文章目录) 一、用户管理表二、基本操作三、用户权限分配给用户某个数据库中某个表的某个权限. grant 权限 on 库.表名 to 用户名主机名. ![在这里插入图片描述](https://img-blog.csdnimg.cn/fe8eb171ef9343c3a09bd64d4f0db5c1.png)分配给用户某个数据库中全部表…

13.Oracle通过JDBC连接Java

Oracle通过JDBC连接Java 一、什么是JDBC二、Oracle通过JDBC连接Java1、导入jar包1.1 下载jar包1.2 将jar包导入到java项目中1.3编译jar包 2、连接数据库2.1 编写jdbc工具类2.2 对数据进行基本操作 一、什么是JDBC JDBC(Java Database Connectivity)是Jav…

微波功率计/频率计-87234系列USB峰值/平均功率计

仪器仪表 苏州新利通 87234系列 USB峰值/平均功率计 频率范围覆盖:50MHz~67GHz 一款基于USB 2.0接口的二极管检波式宽带功率测量仪器 国产思仪功率计 01 产品综述 87234D/E/F/L USB峰值/平均功率计是一款基于USB 2.0接口的二极管检波式宽带功率测…

PowerShell无人参与安装最新版本SQL Server Management Studio (SSMS)

文章目录 下载SQL Server Management Studio (SSMS)Power Shell实现无人安装推荐阅读 下载SQL Server Management Studio (SSMS) SSMS 19.2 是最新的正式发布 (GA) 版本。 如果已经安装了 SSMS 19 预览版,需要在安装 SSMS 19.2 之前将其卸载。 如果安装了 SSMS 19.…

负载均衡Ribbon和Feign的使用与区别

Ribbon 的介绍 Spring Cloud Ribbon 是基于Netflix Ribbon 实现的一套客户端负载均衡的工具。主要功能是提供客户端的软件负载均衡和服务调用。Ribbon 客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说,就是在配置文件中列出Load Balancer…

JVM基础- 垃圾回收器

基本介绍 Java虚拟机(JVM)中的垃圾回收器是用来自动管理内存的关键组件。它负责识别并回收不再使用的内存,从而防止内存泄漏。不同的JVM实现提供了多种垃圾回收器,每种回收器都有其特定的使用场景和性能特点。以下是一些常见的JV…

【用unity实现100个游戏之16】Unity程序化生成随机2D地牢游戏2(附项目源码)

文章目录 先看看最终效果前言生成走廊生成房间修复死胡同增加走廊宽度获取走廊位置信息集合方法一方法二 源码完结 先看看最终效果 前言 上期已经实现了房间的生成,本期紧跟着上期内容,生成走廊并结合上期内容生成连通的房间。 生成走廊 修改Procedur…

集成多元算法,打造高效字面文本相似度计算与匹配搜索解决方案,助力文本匹配冷启动[BM25、词向量、SimHash、Tfidf、SequenceMatcher]

搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排)、系统架构、常见问题、算法项目实战总结、技术细节以及项目实战(含码源) 专栏详细介绍:搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排)、系统架构、常见问题、算法项目实战总结、技术…

zabbix的安装配置,邮件告警,钉钉告警

zabbix监控架构 zabbix优点 开源,无软件成本投入server对设备性能要求低支持设备多,自带多种监控模板支持分布式集中管理,有自动发现功能,可以实现自动化监控开放式接口,扩展性强,插件编写容易当监控的item…

力扣C++学习笔记——C++ 给vector去重

要使用std::set对std::vector进行去重操作,您可以将向量中的元素插入到集合中,因为std::set会自动去除重复元素。然后,您可以将集合中的元素重新存回向量中。以下是一个示例代码,演示如何使用std::set对std::vector进行去重&#…

Linux系统编程 系统编程概念

1.系统调用 系统调用(system call)其实是 Linux 内核提供给应用层的应用编程接口(API),是 Linux 应用层进入内核的入口。不止 Linux 系统,所有的操作系统都会向应用层提供系统调用,应用程序通过…