diff --git "a/03\351\222\237\347\211\241\344\270\271/\347\254\224\350\256\260/2024-7-1-MySQL\345\237\272\346\234\254\346\223\215\344\275\234.md" "b/03\351\222\237\347\211\241\344\270\271/\347\254\224\350\256\260/2024-7-1-MySQL\345\237\272\346\234\254\346\223\215\344\275\234.md" new file mode 100644 index 0000000000000000000000000000000000000000..1ec6b11e7bce7da21a56a3d6c36b2d0913a1ea44 --- /dev/null +++ "b/03\351\222\237\347\211\241\344\270\271/\347\254\224\350\256\260/2024-7-1-MySQL\345\237\272\346\234\254\346\223\215\344\275\234.md" @@ -0,0 +1,110 @@ +# MySQL基本操作 + +## CREATE + +### 创建表 +```sql +CREATE TABLE table_name ( + column1 datatype, + column2 datatype, + ... +); + +例子 +CREATE TABLE students ( + id INT PRIMARY KEY, 主键 + name VARCHAR(50), + age INT +); +``` + +## INSERT + +### 向表中插入数据 +```sql +INSERT INTO table_name (column1, column2, ...) +VALUES (value1, value2, ...); + +例子 +INSERT INTO students (id, name, age) +VALUES (1, 'Alice', 25); +``` + +## DROP + +### 删除表 +```sql +DROP TABLE table_name; +``` + +## DELETE + +### 删除表中的数据 +```sql +DELETE FROM table_name +WHERE condition; + +例子 +### 删除数据 +```sql +DELETE FROM students +WHERE name = 'Alice'; +``` + +## UPDATE + +### 更新表中的数据 +```sql +UPDATE table_name +SET column1 = value1, column2 = value2 +WHERE condition; + +例子 +### 更新数据 +```sql +UPDATE students +SET age = 26 +WHERE name = 'Alice'; +``` + +## ALTER + +### 修改表结构 +```sql +ALTER TABLE table_name +ADD COLUMN new_column datatype; +``` + +## SELECT + +### 查询数据 +```sql +SELECT column1, column2 +FROM table_name +WHERE condition; + +例子 +### 查询数据 +```sql +SELECT * FROM students; +``` + +## SHOW + +### 显示数据库中的所有表、所有库 +```sql +SHOW TABLES; +SHOW DATABASES; +``` + +## DESCRIBE / DESC + +### 描述表结构 +```sql +DESC table_name; +``` + +# drop和delete区别 + +- `DELETE` 用于删除表中的记录,而 `DROP` 用于删除整个表格。 +- `DESCRIBE` 和 `DESC` 用于显示表结构,没有功能上的区别,只是缩写不同。 diff --git "a/03\351\222\237\347\211\241\344\270\271/\347\254\224\350\256\260/2024-7-10-Shell\350\204\232\346\234\254.md" "b/03\351\222\237\347\211\241\344\270\271/\347\254\224\350\256\260/2024-7-10-Shell\350\204\232\346\234\254.md" new file mode 100644 index 0000000000000000000000000000000000000000..78a7c7bb48ecaa10e2ff751fab64612c18cc00ce --- /dev/null +++ "b/03\351\222\237\347\211\241\344\270\271/\347\254\224\350\256\260/2024-7-10-Shell\350\204\232\346\234\254.md" @@ -0,0 +1,153 @@ +# Shell脚本 + +## 基本格式 +Shell脚本通常以`.sh`为文件后缀,其中包含一系列的Shell命令,以实现特定的功能。脚本的基本格式如下: + +```bash +#!/bin/bash + +# 在此处编写脚本内容 +``` + +## 执行Shell脚本的三种方式 +1. 直接相对路径、绝对路径执行: +```bash +./script.sh +``` + +2. 使用bash解释器执行: +```bash +bash script.sh +``` + +3. 使用source 或 . 执行: +```bash +source script.sh +. script.sh +``` + +## 脚本错误调试 +为了调试Shell脚本中的错误,可以在脚本开头添加以下内容来开启调试模式: + +```bash +#!/bin/bash + +bash -x srcipt.sh # 开启调试模式 命令错误 +bash -n script.sh # 语法错误 +``` + +## 各种类型的变量 +### 局部变量 +局部变量只在定义的当前Shell中可见。示例: +```bash +#!/bin/bash + +local_var="Local Variable" +echo $local_var +``` + +### 环境变量 +环境变量可被所有子Shell访问。示例: +```bash +#!/bin/bash + +export ENV_VAR="Environment Variable" +bash child_script.sh +``` + +### 位置参数变量 +位置参数变量包括脚本名($0)和传递给脚本或函数的参数($1、$2等)。示例: +```bash +#!/bin/bash + +echo "Script Name: $0" +echo "First Argument: $1" +``` + +### 特殊变量 +特殊变量包括$$(当前执行进程的进程号)、$?(上个命令的退出状态)、$@(所有传递到脚本的参数)等。示例: +```bash +#!/bin/bash + +echo "Process ID: $$" +echo "Last Command Exit Status: $?" +``` + +## 运算 +Shell脚本中可以进行数值运算,常见的运算符包括`+`、`-`、`*`、`/`、`%`等。示例: +```bash +#!/bin/bash + +num1=10 +num2=5 + +# 加法 +sum=$((num1 + num2)) +echo "Sum: $sum" + +# 减法 +sub=$((num1 - num2)) +echo "Subtraction: $sub" + +# 乘法 +mul=$((num1 * num2)) +echo "Multiplication: $mul" + +# 除法 +div=$((num1 / num2)) +echo "Division: $div" + +# 求余 +mod=$((num1 % num2)) +echo "Modulus: $mod" +``` + +### 四种运算方式 + +1. 使用`expr`命令进行数值运算: +```bash +#!/bin/bash + +num1=10 +num2=5 + +sum=$(expr $num1 + $num2) +echo "Sum using expr: $sum" +``` + +2. echo $sum使用双括号`(( ))`进行数值运算: +```bash +#!/bin/bash + +num1=10 +num2=5 + +((sum = num1 + num2)) +echo $sum +``` + +3. 使用方括号`[ ]`进行数值比较: +```bash +#!/bin/bash + +num1=10 +num2=5 + +if [ $num1 -gt $num2 ]; then + echo "$num1 is greater than $num2" +else + echo "$num1 is not greater than $num2" +fi +``` + +4. 使用`let`命令进行数值运算: +```bash +#!/bin/bash + +num1=10 +num2=5 + +let sum=num1+num2 +echo $sum +``` + diff --git "a/03\351\222\237\347\211\241\344\270\271/\347\254\224\350\256\260/2024-7-3-Debian \345\256\211\350\243\205\345\214\205MySQL.md" "b/03\351\222\237\347\211\241\344\270\271/\347\254\224\350\256\260/2024-7-3-Debian \345\256\211\350\243\205\345\214\205MySQL.md" new file mode 100644 index 0000000000000000000000000000000000000000..ceac60142a8648e4296fa4e2524fd1c940874181 --- /dev/null +++ "b/03\351\222\237\347\211\241\344\270\271/\347\254\224\350\256\260/2024-7-3-Debian \345\256\211\350\243\205\345\214\205MySQL.md" @@ -0,0 +1,112 @@ +# Debian 安装包MySQL + +## 下载MySQL + +``` +wget https://repo.mysql.com/mysql-apt-config_0.8.30-1_all.deb +需要下载最新版本 +sudo dpkg -i mysql-apt-config_0.8.30-1_all.deb +下载完成后需要安装 +安装界面选择 mysql 8.0,通过 tab 选择确定,然后按enter键 +``` + +## 安装MySQL + +``` +更新软件包 +apt update +安装Mysql +apt install mysql-server +注意有Mysql root 密码的对话框 tab切换到OK 继续,其他默认 +``` + +### 查看服务运行状态 + +``` +systemctl status mysql +``` + +``` +安全加固MySQL +MySQL 安装完成后,为了让 MySQL 更加安全,运行以下命令配置 MySQL root 密码并使安装的 MySQL 更安全。 + +sudo mysql_secure_installation +系统将要求您配置 VALIDATE PASSWORD PLUGIN(验证密码插件),该插件用于测试 MySQL 用户密码的强度。 密码验证策略分为三个级别:低,中和强。 如果您不想设置验证密码插件,请按 Enter。 + +之后开始设置密码,以及询问是否移除 MySQL 中的 anonymous 用户,禁用 root 帐号远程登录等一些列为了 MySQL 加强安全的问题,所有内容如无个人特殊要求,默认建议都输入"y"后,回车。 + +命令行连接MySQL +在终端中可以输入mysql客户端命令来连接mysql服务: + +选择默认的身份验证方法以root用户身份登录到MySQL服务器: + +mysql +选择传统身份验证方法登录,请输入: + +mysql -uroot -p +这是输入之前设定的 MySQL root 帐号密码。 + +连接成功后你将会看到类似如下内容: + +Welcome to the MySQL monitor. Commands end with ; or \g. +Your MySQL connection id is 10 +Server version: 8.1.0 MySQL Community Server - GPL +... +mysql> +现在你可以执行 MySQL 的数据库 SQL 语句进行操作了。 +``` + + + +## 设置密码修改密码 + +- 停止 Mysql 服务 + + ``` + /etc/init.d/mysql stop + ``` + +- 使用skip-grant-tables选项启动Mysql + + ``` + + /usr/bin/mysqld_safe --skip-grant-tables + + ``` + +- 登录修改密码 + + ``` + mysql -u root -p + mysql>use mysql; + mysql>update user set password=password('输入你的新密码') where user='root' ; + mysql>flush privileges; // 重新加载授权表,使更改生效,不用重启MySQL + mysql>exitflush privileges + ``` + +- 关掉Mysql + + + + ``` + mysqladmin -u root -p shutdown + ``` + + + +- 启动Mysql + +``` +/usr/bin/mysqld_safe --user=mysql & +``` + + + +## 命令连接MySQL + +``` +mysql +mysql -u root -p +输入密码 +``` + diff --git "a/03\351\222\237\347\211\241\344\270\271/\347\254\224\350\256\260/2024-7-3-\350\241\245\345\205\205\345\221\275\344\273\244.md" "b/03\351\222\237\347\211\241\344\270\271/\347\254\224\350\256\260/2024-7-3-\350\241\245\345\205\205\345\221\275\344\273\244.md" new file mode 100644 index 0000000000000000000000000000000000000000..4281596ceedb2236a8c02ea797d3874589b2f7c6 --- /dev/null +++ "b/03\351\222\237\347\211\241\344\270\271/\347\254\224\350\256\260/2024-7-3-\350\241\245\345\205\205\345\221\275\344\273\244.md" @@ -0,0 +1,133 @@ +# 2024-7-3-补充命令 + +## sort排序 + +``` +cat << EEE > score.xlsx +``` + +EEE表示结束,最后一行 + +- sort默认以每一行的第一个字母ASCII码,升序 +- 数字排在字母前面 + +``` +- r 倒序排序 +- t 按第二行排列 +- k1.2 按第一列的第二个字符排序 +- n 以数字比大小 +- o 直接写会文件保存 +- u 唯一 指定 去重 +``` + + + +## uniq查重 + +- 需要先排序在去重 + + ``` + - c 现实重复次数 + sort u.txt | uniq -c + count 计数 + ``` + + + +## cut + +``` +- d 指定分割符 +- f 指定要显示的列 +- f M,N +``` + + + +## wc-l + +统计文件数 | 文件内容 + +``` +nl +cat -n +vim: set nu 显示行号 +``` + + + +## 三剑客 + +### grep + +- 显示示匹配关键字所在的行(模糊搜索) +- 过滤 + +``` +- A2 查询后两行 +- B 查询前两行 +- C 查询前后两行 +``` + +### sed + +``` +添加 +i\ 前面加 +/关键字/i\内容 +a\ 后面加 +2a\ 后两行加 +``` + +``` +删除 +d 删除行 +2d 删除2行 +/关键字/d 删除匹配的行 +``` + +``` +修改(替换) +s/旧的/新的/替换每行第一个 +每行每一个旧的都替换成新的 +``` + +### awk + +``` +awk -F 分割符 'BEGIN {动作} 条件模式 {动作} END {动作} 文件' + +column -t 文件名将内容以表格显示 +``` + + + +## 软连接 硬链接 + +- **硬链接**:连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。 + +- **硬链接作用**:允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。 + +- **软链接**:另外一种连接称之为符号连接(Symbolic Link),也叫软连接。[软链接文件](https://so.csdn.net/so/search?q=软链接文件&spm=1001.2101.3001.7020)有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。 + +### ln命令 + +ln命令创建硬链接 + +``` +- s 创建符号链接 +- f 如果目标文件已存在 且不是目录 则先将其移除 +- i 交互模式,文件已存在则先询问用户 +- n 把符号链接视为一般目录 +- v 显示其处理的文件 +``` + +格式: ln 参数 源文件 目标文件 + +### 两种链接的对比 + +软链接 硬链接 +**路径**形式存在 **文件副本**形式存在,不占用磁盘空间 +可以跨系统文件 不可以跨系统文件 +可以给目录创建软链接 不可以给目录创建硬链接 +可以给对存在的文件名链接 不可以对不存在的文件名链接 diff --git "a/03\351\222\237\347\211\241\344\270\271/\347\254\224\350\256\260/2024-7-4-\346\225\260\346\215\256\345\272\223\345\244\207\344\273\275\344\270\216\350\277\230\345\216\237.md" "b/03\351\222\237\347\211\241\344\270\271/\347\254\224\350\256\260/2024-7-4-\346\225\260\346\215\256\345\272\223\345\244\207\344\273\275\344\270\216\350\277\230\345\216\237.md" new file mode 100644 index 0000000000000000000000000000000000000000..54b4fa0ba88a355901263b2db787c068debbf88f --- /dev/null +++ "b/03\351\222\237\347\211\241\344\270\271/\347\254\224\350\256\260/2024-7-4-\346\225\260\346\215\256\345\272\223\345\244\207\344\273\275\344\270\216\350\277\230\345\216\237.md" @@ -0,0 +1,132 @@ +``` + +``` + +# 2024-7-4-数据库备份与还原 + +MySQL数据库备份和还原是非常重要的数据库管理任务。 + +# MySQL数据库备份 +数据库备份就是将数据库中的数据和结构保存到一个文件中,以便在需要时进行恢复。 + +### 备份的分类 + +- 逻辑备份:对数据库操作系统的物理文件(如数据文件、日志文件)备份 +- 物理备份:mysql三种备份方式 + - 冷备: 需要关mysql服务,读写请求均不允许状态下进行 + - 温备: 服务在线,但仅支持读请求,不允许写请求 + - 热备:备份的同时业务不受影响 + + + +### 备份对象 + +- 数据 +- 配置文件 +- 代码:存储过程、存储函数、触发器 +- os相关的配置文件 +- 复制相关的配置 +- 二进制日志 + +### 备份数据集合的范围 + +``` +完全备份:full backup,备份全部字符集。 +增量备份: incremental backup 上次完全备份或增量备份以来改变了的数据,不能单独使用,要借助完全备份,备份的频率取决于数据的更新频率。 +差异备份:differential backup 上次完全备份以来改变了的数据。 +建议的恢复策略: +完全+增量+二进制日志 +完全+差异+二进制日志 +``` + + + +### 使用 `mysqldump` 命令备份数据库 + +**可以备份数据结构和数据,以sql格式保存到文件中** + +```bash +mysqldump -u username -p database_name > /tmp/backup.sql +``` + +- `username` 是数据库用户名 +- `database_name` 是要备份的数据库名称 +- `/tmp/backup.sql` 是路径备份文件名 + +### MySQL数据库备份知识整理 + +#### 1. 单库备份 +```bash +mysqldump -u username -p database_name > backup.sql +``` + +#### 2. 多个库备份 +```bash +mysqldump -u username -p --databases db1 db2 db3 > backup.sql +``` + +#### 3. 备份所有数据库 +```bash +mysqldump -u username -p --all-databases > backup.sql +``` + +#### 4. 备份单个表 +```bash +mysqldump -u username -p database_name table_name > backup.sql +``` + +#### 5. 备份多个表 +```bash +mysqldump -u username -p database_name table1 table2 table3 > backup.sql +``` + +#### 6. 只备份数据结构,但不备份数据 +```bash +mysqldump -u username -p --no-data database_name > backup.sql +``` + +#### 7. 只备份数据,但不备份结构 +```bash +mysqldump -u username -p --no-create-info database_name > backup.sql +``` + +#### 8. 备份数据库并压缩输出 +```bash +mysqldump -u username -p database_name | gzip > backup.sql.gz +``` + +以上是关于MySQL数据库备份的多个知识点整理为Markdown格式。希望对您有所帮助。 + +### 2. MySQL数据库还原 +数据库还原是将备份文件中的数据和结构恢复到数据库中。 + +#### 2.1 使用 `mysql` 命令还原数据库 +```bash +mysql -u username -p database_name < backup.sql +``` + +- `username` 是数据库用户名 +- `database_name` 是要还原的数据库名称 +- `backup.sql` 是备份文件名 + +### 其他备份方式 + +1. 使用 `mysqldump` 命令:`mysqldump` 是MySQL官方提供的备份工具,可以备份数据库结构和数据,以SQL格式保存到文件中。 +2. 使用 MySQL Workbench:MySQL Workbench 是MySQL官方提供的图形化管理工具,可以通过其进行数据库备份和恢复操作。 +3. 使用 MySQL 命令行工具:通过在MySQL命令行中执行相应的SQL语句,可以将数据库结构和数据导出到文件中。 +4. 使用第三方工具:还可以使用第三方数据库备份工具,如phpMyAdmin、**Navicat**等进行备份操作。 +5. 定时备份:通过设置定时任务,可以定期自动备份MySQL数据库,确保数据的安全性和可靠性。**(周期任务管理)** + +### 注意事项 +- 在备份或还原数据库之前,请确保已经创建了目标数据库,并且有足够的权限。 +- 执行备份和还原操作时,务必小心谨慎,避免意外操作导致数据丢失。 + +# 数据库的还原 + +登录mysql后 + +``` +use 库名; +source +``` + diff --git "a/03\351\222\237\347\211\241\344\270\271/\347\254\224\350\256\260/2024-7-4\350\277\234\347\250\213\347\231\273\345\275\225.md" "b/03\351\222\237\347\211\241\344\270\271/\347\254\224\350\256\260/2024-7-4\350\277\234\347\250\213\347\231\273\345\275\225.md" new file mode 100644 index 0000000000000000000000000000000000000000..c81dee97ca7cc8bc9f2445a4a3078095a31f363d --- /dev/null +++ "b/03\351\222\237\347\211\241\344\270\271/\347\254\224\350\256\260/2024-7-4\350\277\234\347\250\213\347\231\273\345\275\225.md" @@ -0,0 +1,28 @@ +# 2024-7-4远程登录 + +``` +mysql -u root -p root用户登录mysql + +show databases; 查看数据库 + +use mysql; 进入mysql库 + +show tables; 查看表 + +select * from 表名; 查看指定的某个表 + +select user, host from user; 查看user表中 user host 字段 + +update user set host = '%' where user = 'root' 修改user表中user=‘root’ 的字段host值改为 % + +flush privileges; 刷新mysql系统权限的相关表 +``` + +``` +在mysql配置文件/etc/mysql/mysql.conf.d/mysqld.cnf中添加port= 端口 + +测试是否能够远程连接 + +mysql -u root -p -h 139.9.205.18 -P 3307; +``` + diff --git "a/03\351\222\237\347\211\241\344\270\271/\347\254\224\350\256\260/2024-7-6-postgredql.md" "b/03\351\222\237\347\211\241\344\270\271/\347\254\224\350\256\260/2024-7-6-postgredql.md" new file mode 100644 index 0000000000000000000000000000000000000000..3f747c1d580aa54824cb928ad389edc9149c9a56 --- /dev/null +++ "b/03\351\222\237\347\211\241\344\270\271/\347\254\224\350\256\260/2024-7-6-postgredql.md" @@ -0,0 +1,172 @@ +# 2024-7-6-postgredql + +## postgresql的安装 + +```bash +找到postgresql官网https://www.postgresql.org +找到对应的版本 +输入以下命令 +apt install -y postgresql-common /usr/share/postgresqlcommon/pgdg/apt.postgresql.org.sh +apt update +apt install postgresql + whereis postgresql +``` + + + +## PostgreSQL 基本操作命令 + +``` +**除了以下命令,其余命令都与MySQL操作命令相同** + +**在访问数据库之前需要切换到默认用户 `postgres`** +并执行psql 连接本地数据库 +``` + +### **访问数据库** + +- 列举数据库 `\l` +- 选择数据库 `\c 数据库名` +- 查看当前数据库中所有的表 `\dt` +- 切换数据库 `\c 库名` +- 查看当前数据库中的某个表结构 `\d 表名` +- 查看某个表的所有信息 `select * from 表名` +- 显示字符集 `\encoding` +- 退出psql `\q` + +### 连接数据库 + +- 连接到 PostgreSQL 数据库:`psql -U postgresql -d database_name -h ip地址` + +### 数据库操作 + +- 创建数据库:`CREATE DATABASE database_name;` +- 删除数据库:`DROP DATABASE database_name;` + +### 表操作 + +- 展示所有表:`\dt` +- 创建表:`CREATE TABLE table_name (column1 datatype, column2 datatype, ...);` +- 删除表:`DROP TABLE table_name;` + +### 数据操作 + +- 插入数据:`INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);` +- 查询数据:`SELECT * FROM table_name;` +- 更新数据:`UPDATE table_name SET column1 = value1 WHERE condition;` +- 删除数据:`DELETE FROM table_name WHERE condition;` + +### 创建索引 + +```md +### 创建索引 + +- 创建索引:`CREATE INDEX index_name ON table_name (column_name);` +``` + +### 创建约束 + +```md +### 创建约束 + +- 创建主键约束:`ALTER TABLE table_name ADD PRIMARY KEY (column_name);` +- 创建外键约束:`ALTER TABLE table_name ADD FOREIGN KEY (column_name) REFERENCES other_table(column_name);` +``` + +### 用户管理 + +```md +### 用户管理 + +- 创建用户:`CREATE USER username WITH PASSWORD 'password';` +- 删除用户:`DROP USER username;` +``` + +### 授权用户 + +```md +### 授权用户 + +- 授权用户访问数据库:`GRANT ALL PRIVILEGES ON DATABASE database_name TO username;` +将xx数据库的所有权限都赋予xx用户 +- 授权用户访问表:`GRANT ALL PRIVILEGES ON TABLE table_name TO username;` +``` + +### 修改用户密码 + +```md +### 修改用户密码 + +- 修改用户密码:`ALTER USER username WITH PASSWORD 'new_password';` +``` + +### 备份数据库 + +```md +### 备份数据库 + +- 备份数据库:`pg_dump -U username -d database_name > backup_file.sql` +``` + +### 恢复数据库 + +```md +### 恢复数据库 + +- 恢复数据库:`psql -U username -d database_name < backup_file.sql` +``` + +## postgresql登录 + +### 本地登录 + +**默认参数都不写则表示直接连接本地的数据库** + +**本地登录不需要密码** + +`psql` + +### 远程登录 + +**语法**: + +`psql -h ip地址 -p 端口 -U 数据库名` + +`psql -h ip地址 -p 端口 -U 数据库名` -d 库名 指定库名远程登录 + +- postgresql 默认端口为5432 +- 记得开启防火墙 `ufw allow 5432/tcp` +- 注意在配置文件中添加内容时,加密方式不能设置为 trust + +``` +1. vim /etc/postgresql/16/main/postgresql.conf +找到配置文件postgresql.conf 修改listen_addresses为* + +2. vim /etc/postgresql/16/main/pg_hba.conf +找到pg_hba.conf配置文件 +将 host all all 0.0.0.0/0 md5 添加至文件中,代表所有的用户任意ip都可以通过md5(密码)的方式登录postgresql +3. systemctl restart postgresql 重启postgresql +4.`psql -h ip地址 -p 端口 -U 数据库名` -d 库名 指定库名远程登录 +``` + + + +## 卸载程序 + +关于在 Debian 系统上使用 apt 命令进行包管理的一些常用操作: + +### apt autoremove + +自动删除不再需要的软件包,包括依赖的软件包。 + +### apt --purge remove + +彻底移除指定的软件包,包括删除配置文件。 + +### apt autoclean + +清理过时的软件包,保留最新版本的软件包。 + +### apt clean + +清理所有已下载的软件包。 \ No newline at end of file diff --git "a/03\351\222\237\347\211\241\344\270\271/\347\254\224\350\256\260/2024-7-9-PostgreSQL\345\244\207\344\273\275\344\270\216\350\277\230\345\216\237.md" "b/03\351\222\237\347\211\241\344\270\271/\347\254\224\350\256\260/2024-7-9-PostgreSQL\345\244\207\344\273\275\344\270\216\350\277\230\345\216\237.md" new file mode 100644 index 0000000000000000000000000000000000000000..72586e1620289d1e629c84d009275a9e945a7577 --- /dev/null +++ "b/03\351\222\237\347\211\241\344\270\271/\347\254\224\350\256\260/2024-7-9-PostgreSQL\345\244\207\344\273\275\344\270\216\350\277\230\345\216\237.md" @@ -0,0 +1,109 @@ +# PostgreSQL备份与还原 + +## 备份 +### 1. 使用pg_dump备份整个数据库 +```bash +pg_dump -U -d > .sql +``` +例如: +```bash +pg_dump -U my_user -d my_database > my_backup.sql +``` + +### 2. 使用pg_dump备份指定表 +```bash +pg_dump -U -d -t > .sql +``` +例如: +```bash +pg_dump -U my_user -d my_database -t my_table > my_table_backup.sql +``` + +### 3. 使用pg_dumpall备份整个数据库集群 +```bash +pg_dumpall -U > .sql +``` +例如: +```bash +pg_dumpall -U my_user > my_cluster_backup.sql +``` + +## 压缩备份 + +### 1. 使用gzip压缩备份文件 + +``` +gzip .sql +``` + +- 使用 `gzip` 命令可以对备份文件进行压缩,减少文件大小,节省存储空间。 + +### 2. 使用pg_dump和gzip结合备份并压缩 + +``` +pg_dump -U -d | gzip > .sql.gz +``` + +- 将 `pg_dump` 导出的数据通过管道传输给 `gzip` 命令,直接生成压缩后的备份文件。 + +## 还原 + +### 1. 使用psql恢复整个数据库 +```bash +psql -U -d -f .sql +``` +例如: +```bash +psql -U my_user -d my_database -f my_backup.sql +``` + +### 2. 使用psql恢复指定表 +1. 首先创建一个空表 +```sql +CREATE TABLE new_table (); +``` +2. 从备份文件中导入数据到新表 +```bash +psql -U -d -c "\copy new_table FROM '.sql'" +``` +例如: +```bash +psql -U my_user -d my_database -c "\copy new_table FROM 'my_table_backup.sql'" +``` + +### 3. 使用psql恢复整个数据库集群 +```bash +psql -U -f .sql +``` +例如: +```bash +psql -U my_user -f my_cluster_backup.sql +``` + +# PostgreSQL备份与还原参数选项 + +在使用 PostgreSQL 的备份与还原工具时,可以通过不同的参数选项来定制备份和恢复过程的行为。以下是一些常用的参数选项: + +## pg_dump 参数选项 +- `-U `: 指定连接数据库时使用的用户名。 +- `-d `: 指定要备份的数据库名。 +- `-t `: 指定备份的表名。 +- `-F `: 指定输出文件格式,如 `-F p`(平面文件)、`-F c`(自定义格式)、`-F d`(目录格式)等。 +- `-f `: 指定备份输出的文件名。 + +## pg_dumpall 参数选项 +- `-U `: 指定连接数据库时使用的用户名。 +- `-f `: 指定备份输出的文件名。 + +## psql 参数选项 +- `-U `: 指定连接数据库时使用的用户名。 +- `-d `: 指定连接的数据库名。 +- `-c `: 指定要执行的 SQL 命令。 +- `-f `: 指定从文件中读取并执行 SQL 命令。 +- `-c "\copy FROM ''"`: 从文件导入数据到表。 +- `-f `: 指定要执行的 SQL 脚本文件名。 + +## gzip 参数选项 +- `.sql`: 备份文件名,用于压缩和解压缩。 + +# 如果加了-h 主机,就要密码,而且一般要指定-U这个选项指定用户名 diff --git "a/03\351\222\237\347\211\241\344\270\271/\347\254\224\350\256\260/sql\350\204\232\346\234\254.md" "b/03\351\222\237\347\211\241\344\270\271/\347\254\224\350\256\260/sql\350\204\232\346\234\254.md" new file mode 100644 index 0000000000000000000000000000000000000000..f91e2a1ac85f7c308d53a024b7145c1a4688846e --- /dev/null +++ "b/03\351\222\237\347\211\241\344\270\271/\347\254\224\350\256\260/sql\350\204\232\346\234\254.md" @@ -0,0 +1,36 @@ +# sql脚本 + +- sql脚本是包含一道多个sql命令的sql语句,将这些sql脚本放在一个文件中,然后通过相关的命令执行这个sql脚本文件。 + +- sql脚本可用于插入数据,读取数据,更新数据和删除数据,它们也可以用于创建数据库对象,如表、视图、存储过程,甚至可以创建整个数据库本身-完整的表、数据、用户等等。 +- 文件以扩展名是.sql,文件中包含一些列的sql语句,每条语句最后以;结尾 + + + +## 编写sql脚本 + +``` +sql脚本语句是从上往下执行的,要创建表,得先切换到指定的数据库中 +创建数据库 + +create database test + +切换数据库 + +use test + +drop table if exists user + +create table user( + +`id` varchar(50) NOT NULL primary key, + +`username` varchar(50) NOT NULL, + + `hobby` varchar(50) NOT NULL + +); + + +``` +