Centos7下安装PostgreSQL14及其基本命令使用

news2024/12/24 10:01:44

MySQL关系型数据库目前算是互联网公司使用最多的。前两天看到一个推文,相对比国内使用MySQL,PostgreSQL在国内的普及貌似不高?国外像网络电话公司Skype公司等在大量使用PostgreSQL

作为互联网从业者,保持学习是必须的。开始学习PostgreSQL作为技术储备

PostgreSQL 二进制安装

Centos下二进制安装一般是借助于 YUM 来安装。在 PostgreSQL的官网选定版本和操作系统之后,会自动生成YUM安装脚本

对应的页面地址为 https://www.postgresql.org/download/linux/redhat/

选择对应的 PostgreSQL版本、操作系统和架构,下面就生成了 YUM安装命令

image-20221210181631953

安装命令

# 先安装PostgreSQL的YUM源
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

# 安装server
sudo yum install -y postgresql14-server

# 先必须进行初始化
sudo /usr/pgsql-14/bin/postgresql-14-setup initdb
# 然后可以选择性的开启 开机自启动
sudo systemctl enable postgresql-14
# 启动服务
sudo systemctl start postgresql-14

但是有个问题

PostgreSQL 初始化数据库之后,默认的数据目录是在/var/lib/pgsql ,但是该目录是在 根分区下,一般建议放到独立的数据目录下

所以这里进行如下操作

# 新增 数据磁盘目录
mkdir /data/databases

# 停止数据库
systemctl stop postgresql-14

# 移动原始数据目录 
mv /var/lib/pgsql /data/databases/

# 创建软连
cd /var/lib && ln -s /data/databases/pgsql pgsql

# 然后启动服务
systemctl start postgresql-14

最后验证安装是否成功

# 切换到 postgres 用户(yum安装时自动生成)
[root@test-demo-01-vm]$ su - postgres
# 直接输入 psql 回车, 输出 psql (14.6) 就代表安装成功
[postgres@test-demo-01-vm]$ psql
psql (14.6)
Type "help" for help.

# \l 列举目前实例中的所有数据库,类似mysql中的 show databases ;
postgres=# \l
                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
(3 rows)

postgres=# \du
                                   List of roles
 Role name |                         Attributes                         | Member of
-----------+------------------------------------------------------------+-----------
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}

postgres=# \dg
                                   List of roles
 Role name |                         Attributes                         | Member of
-----------+------------------------------------------------------------+-----------
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}

PostgreSQL 说明

1、从 \l 列举出来的数据库清单中,看到有三个数据库

  • PostgreSQL中默认有两个特殊的数据库,template0/template1 模板数据库

    就是说可以在这两个数据库中新增一些表、视图等,然后创建数据库的时候可以指定从那个模板数据库来克隆,这样新增的数据库就会有对应的模板数据库包括的表或者视图等

    • 创建数据库不指定模板数据库的时候,默认从 template1 克隆

    • template0 是默认最简化的数据库,它不能连接到该库,也不能对其就行修改,要保持它的"干净"

    • 使用 template1 模板库建库时不可指定新的 encoding 和 locale,而 template0 可以

    • 默认这两个模板数据库都不可以被删除

  • postgres 库是默认创建的非模板数据库,它是属于 postgres 数据库用户, 在Centos服务器还有个 postgres Linux用户

    1、所以这里注意这三个 postgres 的区别

    2、Linux下切换到postgres用户直接使用客户端工具psql 连接时不加参数登录,其实就是使用 postgres 数据库用户登录

    3、 postgres 数据库用户是默认的超级用户

2、关于 PostgreSQL中的用户和角色

在PostgreSQL 中使用角色 来管理权限,可以把一系列权限分配给角色,当然也可以把权限分配给用户。

所以从这个角度理解的话,Postgresql 用户和角色 是一回事,用户也是角色。 从上面的\du 或者 \dg 的结果就能知道

📢 PostgreSQL中的所有命令都是\ 开头

PostgreSQL 基本命令

1、数据库操作

列举数据库\l、连接数据库 \c dbname

template1=# create database colinspace ;
CREATE DATABASE
template1=# \l
                                  List of databases
    Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
------------+----------+----------+-------------+-------------+-----------------------
 colinspace | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 postgres   | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 template0  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
            |          |          |             |             | postgres=CTc/postgres
 template1  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
            |          |          |             |             | postgres=CTc/postgres
(4 rows)

template1=# \c colinspace
You are now connected to database "colinspace" as user "postgres".

2、表操作

  • 列举数据库下的表\d
  • 查询具体表结构信息\d tablename
  • 查询表的索引信息 \d table_index_name
colinspace=# \d
Did not find any relations.
colinspace=# create table temp_app(id int not null primary key, name varchar(32) not null) ;
CREATE TABLE
colinspace=# \d
          List of relations
 Schema |   Name   | Type  |  Owner
--------+----------+-------+----------
 public | temp_app | table | postgres
(1 row)

colinspace=# \d temp_app
                     Table "public.temp_app"
 Column |         Type          | Collation | Nullable | Default
--------+-----------------------+-----------+----------+---------
 id     | integer               |           | not null |
 name   | character varying(32) |           | not null |
Indexes:
    "temp_app_pkey" PRIMARY KEY, btree (id)


colinspace=# \d temp_app_pkey
     Index "public.temp_app_pkey"
 Column |  Type   | Key? | Definition
--------+---------+------+------------
 id     | integer | yes  | id
primary key, btree, for table "public.temp_app"

此外

  • 支持通配符 *? ,查询满足规则的表或者索引等
  • \d+ 详细更加详细的表信息
  • \dt 只显示匹配的表
  • \di 只显示索引
  • \ds 只显示序列
  • \dv 只显示视图
  • \df 只显示函数
  • \dn 列出所有的 schema 模式
  • \db 列出所有的表空间
  • \du 或者 \dg 列出数据库中的所有角色后者用户
  • \dp 或者\z 显示表的权限分配情况

3、特殊命令

3.1、\timing on/off 显示和关闭 SQL 已执行的时间

colinspace=# \timing on
Timing is on.
colinspace=# select * from temp_app ;
 id | name
----+------
(0 rows)

Time: 0.729 ms
colinspace=# \timing off
Timing is off.

3.2、\encoding utf8/gbk 等设置客户端的字符编码

3.3、\pset border 0/1/2 设置输出的格式

  • 0 表示输出的内容无边框
  • 1 表示输出的边框只在内部 (默认行为)
  • 2 表示内外都有边框
colinspace=# \pset border 0
Border style is 0.
colinspace=# \d
       List of relations
Schema   Name   Type   Owner
------ -------- ----- --------
public temp_app table postgres
(1 row)

colinspace=# \pset border 1
Border style is 1.
colinspace=# \d
          List of relations
 Schema |   Name   | Type  |  Owner
--------+----------+-------+----------
 public | temp_app | table | postgres
(1 row)

colinspace=# \pset border 2
Border style is 2.
colinspace=# \d
           List of relations
+--------+----------+-------+----------+
| Schema |   Name   | Type  |  Owner   |
+--------+----------+-------+----------+
| public | temp_app | table | postgres |
+--------+----------+-------+----------+
(1 row)

3.4、\x 类似MySQL的在命令之后添加\G

3.5、\i filename 执行存储在外部文件中的sql文件或者命令, 参数是只要文件名,不带后缀

当然想要查看更多的命令及其用法,可以使用\?

如果有在学PostgreSQL的,可以一起交流学习~


原文连接 Centos7下安装PostgreSQL14及其基本命令使用

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

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

相关文章

小甲鱼C语言【课后笔记第一章——打印(printf)

目录 1、“打印”就是“输出”的意思 2、使用 GCC 编译程序:gcc 源代码 -o 可执行文件。 3、printf 是格式化输出函数 a、函数概要 b、函数原型 c、参数分析 d、返回值 e、演示 4. 转义字符 5. 反斜杠的奥义 6、课后习题(编程题) 1、…

性能工具之JMeter模拟多IP地址访问

文章目录一、前言二、前置条件三、操作步骤一、前言 今天一同事在压测时提到怎么用 JMeter 里虚拟多个 IP 来发送请求,我想了一下以前用LR时用过虚拟ip地址,JMeter 还没有使用过。想着原理应该是相通的,既然 LR 都能支持的话,那 …

多线程学习笔记(四)-- 常见类及使用

1. thread的方法 Thread.sleep():占用cpu资源 Thread.yeild():当前线程让渡cpu资源,大家竞争,也有再抢到cpu的机会 t1.join():在t2线程中,调用t1.join(),是等待t1执行完成 2. 线程状态 3. sy…

力扣(LeetCode)142. 环形链表 II(C++)

哈希表 最直观的思想&#xff0c;哈希表记录遍历的结点&#xff0c;如果结点重复出现&#xff0c;则有环。如果遍历到空结点&#xff0c;无环。 class Solution { public:ListNode *detectCycle(ListNode *head) {unordered_set<ListNode *> ad;auto tail head;while(…

java计算机毕业设计ssm医患交流平台93xzr(附源码、数据库)

java计算机毕业设计ssm医患交流平台93xzr&#xff08;附源码、数据库&#xff09; 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。…

用Excel自带图表插入带分类变量的箱形图(单坐标轴并列箱)

箱型图主要用来观察一个或多个类别下&#xff0c;数值型变量的分位数及离群值的特征和分布&#xff0c;以及在一定程度上观察到偏度和峰度的状态。网上有一些自己计算分位数来绘制箱型图的方法&#xff0c;但一方面是没有直接使用excel自带的箱型图好看和功能全面&#xff0c;二…

qq群聊机器人接入ChatGPT-简介和源码

qq群聊机器人接入ChatGPT 最近 ChatGPT 很火&#xff0c;也注册了账号玩了玩&#xff0c;确实灰常强大。但是也有的小伙伴可能没办法注册账号&#xff0c;我就想着把qq群机器人接入ChatGPT。 过程还是比较简单顺利的。下面简单介绍一下 直接跳过介绍&#xff0c;查项目代码 1…

绘制金字塔-第10届蓝桥杯Scratch选拔赛真题精选

[导读]&#xff1a;超平老师计划推出Scratch蓝桥杯真题解析100讲&#xff0c;这是超平老师解读Scratch蓝桥真题系列的第100讲。 蓝桥杯选拔赛每一届都要举行4~5次&#xff0c;和省赛、国赛相比&#xff0c;题目要简单不少&#xff0c;再加上篇幅有限&#xff0c;因此我精挑细选…

基于java(springboot)校园新闻管理系统源码(java毕业设计)

基于java(springboot)校园新闻管理系统 校园新闻管理系统是基于java编程语言&#xff0c;MySQL数据库&#xff0c;和springboot框架&#xff0c;用idea开发工具开发的设计&#xff0c;本设计分为学生用户&#xff0c;管理员两个角色&#xff0c; 学生的主要功能是可以注册登陆…

Cpolar实现虚拟机内网穿透,搭建私人云服务器

Cpolar实现虚拟机内网穿透,搭建私人云服务器 一、Cpolar功能介绍 Cpolar官网 Cpolar是一个安全的内网穿透的服务&#xff0c;可以将内网下的本地服务器通过安全隧道暴漏给公网。允许公网用户可以正常访问内网服务&#xff0c;是一款免费的内网穿透软件。只需要一行命令&#…

Python小炼(1):初识Python

"也许对我来说&#xff0c;太多拘束可能" 本篇的主要内容,针对的是一些常见的语法&#xff0c;在python中是怎样表示的&#xff0c;例如,python变量如何定义、选择、循环、判断结构是如何表示的&#xff1f;python函 数定义是怎么定义的…… ----前言 一、认识pyt…

无需代理及注册在VsCode中使用ChatGPT

无需代理及注册在VsCode中使用ChatGPT 安装 要安装扩展&#xff0c;请按照下列步骤操作&#xff1a; 1.打开 Visual Studio Code 2.单击左侧栏中的扩展程序图标 3.搜索"ChatGPT中文版" 4.点击安装按钮安装扩展 5.重启VSCode 用法 开始使用 在编辑器中右键触发…

【LeetCode每日一题:1691. 堆叠长方体的最大高度~~~排序+贪心】

题目描述 给你 n 个长方体 cuboids &#xff0c;其中第 i 个长方体的长宽高表示为 cuboids[i] [widthi, lengthi, heighti]&#xff08;下标从 0 开始&#xff09;。请你从 cuboids 选出一个 子集 &#xff0c;并将它们堆叠起来。 如果 widthi < widthj 且 lengthi < …

Java学习笔记6.3.3 文件操作 - 对象序列化与反序列化

文章目录零、本讲学习目标一、对象序列化与反序列化&#xff08;一&#xff09;对象序列化与反序列化概念&#xff08;二&#xff09;对象序列化与反序列化示意图&#xff08;三&#xff09;实际开发中序列化和反序列化的场景&#xff08;四&#xff09;实现对象序列化的两种方…

26岁,干了三年测试,月薪才12k,能跳槽找到一个更高薪资的工作吗?

在我们的身边&#xff0c;存在一个普遍现象&#xff1a;很多人从事软件测试岗&#xff0c;不计其数&#xff0c;经历的心酸难与外人道也。可是技术确难以提升、止步不前&#xff0c;薪资也只能看着别人水涨船高&#xff0c;自己却没有什么起色。 虽然在公司里属于不可缺少的一…

计算机网络:数据链路层

数据链路层 数据链路层主要处理单个链路上如何传输数据&#xff0c;并且向网络层向上提供服务 1. 数据链路层概述 1.1 术语介绍 主机拥有全部的计算机网络结构&#xff0c;路由器只有一部分 各个路由器之间由物理层连接 红线为发送的信息 1.2 数据链路层的三个重要问题 封装…

职业危机:从无到有,从弱到强;反思再反思和应对措施

一、写在开头 每天每周不写点东西&#xff0c;不把脑中的疑惑写明白&#xff0c;就感觉不到每天的进步。 每天没进步&#xff0c;这北漂生活&#xff0c;何时是个头啊。 可以北漂10年&#xff0c;也可以20年&#xff0c;但不可能是一辈子。 因为我不是北京人呐。 二、持续转…

Redis的字符串是怎么实现的

本篇会讲以下内容&#xff1a; Redis字符串的实现 Redis字符串的性能优势 Redis字符串的实现 Redis虽然是用C语言写的&#xff0c;但却没有直接用C语言的字符串&#xff0c;而是自己实现了一套字符串。目的就是为了提升速度&#xff0c;提升性能&#xff0c;可以看出Redis为…

Nacos的服务注册之客户端

服务注册到Nacos以后,会保存在一个本地注册表中,这个注册表是一个map. private Map<String, Map<String, Service>> serviceMap new ConcurrentHashMap<>(); key是namespace,用来隔离环境 value又是一个map      key是group      value又是一个s…

java计算机毕业设计springboot+vue远程教育系统

项目介绍 通篇文章的撰写基础是实际的应用需要,然后在架构系统之前全面复习大学所修习的相关知识以及网络提供的技术应用教程,以远程教育系统的实际应用需要出发,架构系统来改善现远程教育系统工作流程繁琐等问题。不仅如此以操作者的角度来说,该系统的架构能够对多媒体课程进…