当前位置: 首页 > news >正文

PostgreSQL 日常维护

目录

1. 数据库操作

2. 数据表操作

3. 模式操作命令

4. 数据操作

5. 备份与恢复

6. 远程连接

7. 重置密码


1. 数据库操作

(1) 列出表

常用的三种方法如下:

方法一:

postgres=# \1

在 PostgreSQL 的交互终端 psql 中, "\" 开头的命令称为元命令(类似MySQL的 SHOW 语句),用于快速管理数据库常用元命令有:

\1列出所有数据库。
\c[数据库名]或 connect[数据库名]
\dn列出所有模式(Schema)。
\db列出所有表空间。
\?显示pgsql 命令的说明(元命令查询帮助)
\q退出 psq1
\dt列出当前数据库的所有表
\d[TABLE]查看表结构
\du列出所有用户

方法二:

postgres=# \1+

\1+的输出比1多了Size,Tablespace 和 Description 列

+:扩展输出,显示更多字段或详细信息

方法三:

使用 SQL 命令

postgres=# SELECT datname FROM pg_database;

pg database 是系统表:它存储了 PostgreSQl, 实例中所有数据库的元信息(如数据库名称、所有者、编码等)。属于系统目录(System Catalog):类似 MySQL的 information_schema,但 PostgreSQL 的系统目录更底层且直接存储在pg_catalog 模式中。

pg_database 是系统目录表,所以无论当前连接到哪个数据库,该表始终可见系统表默认属于pg_catalog 模式,而 pg_catalog 始终位于搜索路径(search_path)的首位。因此,查询时无需显式指定模式(如pg_catalog.pg_database)。

(2) 创建库

postgres=# create database mydb;
CREATE DATABASE

(3) 删除库

postgres=# drop database mydb;
DROP DATABASE

(4) 切换库

postgres=# \c mydb;
You are now connected to database "mydb" as user "postgres".
mydb=#

(5) 查看库大小

函数以字节为单位返回数据库的大小
postgres=# SELECT pg database size('mydb');
pg_database size
----------------------7594499(1 行记录)
函数将字节转为更易于阅读值
postgres-# SElECT pg size pretty(pg database size( mydb'));
pg_size _pretty
----------------------7417 kB
(1 行记录)

2. 数据表操作

(1) 列出表

列出表的常用方法:

mydb=# \dt;
列出表(显示 search path 中模式里的表,默认 public)
mydb=# \d;
列出表,视图和序列
mydb=#\dt my schema.*
列出指定模式下的表(例如 my_schema)
mydb=#\dt *.*
查看当前数据库的所有表(包括系统表)
mydb=#SELECT * FROM pg tables WHERE schemaname ='public’;
使用 SLQL 方式列出当前数据库中 public 模式下的所有表及其详细信息

(2) 创建表

PostgreSQL 支持标准的SQL类型 int、smallint、real、double precision、char(N)、varchar(N)、date、time、timestamp和interval,还支持其他的通用功能的类型和丰富的几何类型。PostgreSQl中可以定制任意数量的用户定义数据类型。因而类型名并不是语法关键字,除了 SQL 标准要求支持的特例外。

postgres=# create table test(id int,name char(10),age int);

(3) 复制表

要将已有的 table_name 表复制为新表 new table,包括表结构和数据,请使用以下语句

CREATE TABLE new table AS TABLE table name;

(4) 删除表

postgres=# drop table test2;

(5) 查看表结构

postgres=#d test:

3. 模式操作命令

在 PostgreSL 中,模式(Schema)是一个逻辑容器,用于组织和管理数据库对象(如表、视图、函数、索引等)。它类似于文件系统中的文件夹,帮助你在同一个数据库中分类存储不同的对象,避免命名冲突,并实现权限离

(1) 创建模式

在当前库 postgres 中创建名为 hr 的模式

postgreS=# CREATE SCHEMA hr;

(2) 默认模式

PostgresQl, 每个数据库都有一个默认模式 public。如果创建对象(表、视图等)时不指定模式,默认会放在public 模式中。通过 search path 参数可以设置模式的搜索优先级(类似 PATH 环境变量):

postgres=# SHOW search path;

(3) 删除模式

删除空模式

postgres=# DROP SCHEMA hr:

强制删除模式及其所有对象

postgres=# DROP SCHEMA hr CASCADE;

(4) 查看所有模式

元命令列出当前库中所有模式

postgres=# dn

SQL 查询,列出当前库中所有模式

postgres-# SElECT schema name FROM information schema. schemata;

(5) 在指定模式中创建表

未指定模式时,创建的对象(表,视图等)会按 search_path 顺序创建到第一个可用的模式中

在 postgres 库中的 hr 模式下创建一个名为employees 的库

postgres-#CREATE TABlE hr.employees (id SERIAL, PRIMARY KEY, name TEXT);

(6) 切换当前模式

切换模式也就是调整search path 的搜索范围

切换到单个 schema

SET search path TO new schema;

切换到多个 schema(按优先级顺序)

SET search path To hr,public;

(7) 查看当前所在 schema

postgres-# SELECT current schema():

(8) 查看搜索路径 (Search Path)

postgres=# SHOW search path;

4. 数据操作

(1) 添加数据

在 postgres 库,新建表 test

postgres=# create table test(id int,name char(10),age int);
postgres=# insert into test values(l, zhangsan',18);

(2) 查询数据

postgres=# select * from test;

(3) 修改数据

postgres=# update test set age=20 where id=l;
postgres=# select *from test;

(4) 删除数据

postgres=# delete from test where id=l:
postgres=# select * from test;

5. 备份与恢复

PostgreSQ 数据库应当被定期地备份。虽然过程相当简单,但清晰地理解其底层技术和假设是非常重要的。
有三种不同的基本方法来备份 PostgresQL 数据:

(1) SQL 转储

SQL 转储方法的思想是创建一个由 SQL命令组成的文件,当把这个文件回馈给服务器时,服务器将利用其中的 SQL 命令重建与转储时状态一样的数据PostgresqL 为此提供了工具 pg_dump。这个工具的基本用法是:

pg_dump dbname >dumpfile

(2) 从转储中恢复

pg_dump 生成的文本文件可以由 psq1 程序读取。 从转储中恢复的常用命令是:

psql dbname < dumpfile

(3) 使用 pg_dumpall

pg_dump 每次只转储一个数据库,而且它不会转储关于角色或表空间(因为它们是集簇范围的)的信息。为了支持方便地转储一个数据库集簇的全部内容,提供了 pg_dumpa11程序。pg_dumpa11 备份一个给定集簇中的每一个数据库,并且也保留了集簇范围的数据,如角色和表空间定义。该命令的基本用法是:

pg_dumpall >dumpfile
转储的结果可以使用 psq1 恢复:
psql -f dumpfile postgres

6. 远程连接

(1) 修改 PostgreSQL 监听地址

默认 PostgreSql 监听的地址是 127.0.0.1,别的机器无法远程连接上,所以需要调整,修改 postgresql.conf 文件。

通过 dnf 安装的 pgsq1配置文件在

/var/lib/pgsql/data/postgresql. conf

通过源码编译安装的 pgsq1配置文件在

/usr/local/pgsql/data/postgresql.conf

以 dnf 安装为例:

更改第60行,取消注释并把localhost 改成*

[root@bogon ~]# grep 'listen addresses' /var/lib/pgsql/data/postgresql. conf

重启服务

systemetl restart postgresql
ss -tnl

(2) 配置访问权限

默认是只能本地访间 PostgreSql 的,我们需要在 pg hba.conf 里面配置

找到IPv4 local connections 这一行,在这一行下面添加
host        all        all        0.0.0.0/0        trust

(3) 重启服务

systemctl start postgresql

(4) 验证远程连接

使用其它主机远程连接本机数据库,设置的是trust,无密码,可直接登录

7. 重置密码

(1) 备份配置文件

对 pg_hba.conf 文件,进行备份

[root@localhost ~]# cp /var/lib/pgsql/data/postgresql.conf /var/lib/pgsql/data/postgresql. confbak

(2) 修改配置文件

修改配置文件以信任本地连接不需要密码。将配置文件中的 scram-sha-256 或者 md5 修改为 trust

[root@localhost ~]# vim /var/lib/pgsql/data/postgresql.conf

(3) 重启服务

[root@localhost ~]# systemctl restart postgresql

(4) 修改密码

登录数据库修改密码,密码自定义

postgres-# ALTER USER postgres WITH PASSWORD 'new password’:

(5) 恢复 pg_hba.conf 配置文件

将 postgresq1.confbak 文件的内容覆盖 pg_hba.conf,重启 Postgresql 数据库服务器,重新登陆时,如果提示输入密码,则输入刚才修改的密码即可

相关文章:

  • VLA模型:自动驾驶与机器人行业的革命性跃迁,端到端智能如何重塑未来?
  • 【C++】移动语义与move()实用性教学
  • Docker网关冲突导致容器启动网络异常解决方案
  • 蓝桥杯3503 更小的数
  • Podman(Pod Manager)简介
  • Zabbix开源监控的全面详解!
  • Docker面试题(1)
  • ADB常用语句
  • Python 包管理工具uv常用场景使用指南
  • OpenCv高阶(十四)——LBPH人脸识别
  • 线性表数据结构-队列
  • 电感在断开的时候会按原来的电流方向流动这是什么定理?
  • 【每周一个MCP】:将pytdx封装成MCP
  • STL中的Vector(顺序表)
  • Flannel后端为UDP模式下,分析数据包的发送方式(一)
  • 【npm】npm命令大全
  • Vue3中插槽, pinia的安装和使用(超详细教程)
  • Xilinx 7Series\UltraScale 在线升级FLASH STARTUPE2和STARTUPE3使用
  • 关于收集 Android Telephony 网络信息的设计思考
  • 进程调度算法深度剖析:FCFS、SJF、RR、优先级及多级反馈队列全解
  • 个人做网站 优帮云/优化百度seo技术搜索引擎
  • 网站后台日志/广安seo外包
  • 做网站公众号要多少钱/搜索引擎优化的方法有哪些
  • 海口网站制作设计/郑州网站排名推广
  • 做微博分析的网站/私人网站管理软件
  • 口碑好的邯郸网站建设/浙江疫情最新消息