数据库取证——MySQL基础知识

news2024/11/26 19:21:25

目录

一、数据库基础知识

(一)数据库(DB)

(二)数据库管理系统(DBMS)

(三)数据库系统(DBS)

(四) 数据库的常用操作方式

(五)MySQL架构

二、MySQL备份与还原

(一)mysql的备份与还原

(1)通过navicat备份和还原数据库

 (2)通过mysqldump备份数据库

三、MySQL 密码重置

(一)Linux系统下MySQL密码重置

(二)Windows系统下MySQL密码重置

四、Mysql基本操作命令

(一)sql语言简介

(二)sql查询语句实操

一、查询全部的列

二、选择表中的若干元组

三、查询满足条件的元组

四、确定范围

五、字符串匹配

 五、数据库日志及应用

(一)数据库事务

(二)Mysql数据库日志

(三)通过General_log日志分析数据库、表、字段

(四)通过binlog日志恢复删除的数据


一、数据库基础知识

(一)数据库(DB)

        存放数据的仓库,按照数据结构来组织、存储和管理数据的仓库。

数据库类型

  • 关系型数据库:以表的形式存储数据,表与表之间有很多复杂的关联关系。关系型数据库遵循结构化查询语言SQL(Structured Query Language)标准和ACID原则。常见关系型数据库有MySQL,SQLServer,Oracle等。
  • 非关系型数据库(NoSQL,Not Only SQL):是分布式、非关系型、不保证遵循ACID原则的数据存储系统。常见非关系数据库有Redis(键值对存储)、Hbase(列存储)、MongoDB(文档型数据库)、InfoGrid(图数据库)。

(二)数据库管理系统(DBMS)

        数据库管理系统(Database Management System,DBMS):一种操纵和管理数据库的软件,用于建立、使用和维护数据库。能够提供数据录入、修改、查询操作。具有数据定义、数据操作、数据存储与管理、数据维护、通信等功能,且能够允许多用户使用。

  1. 数据定义语言:DDL(Data Define Language)语言,用于建立、修改数据库结构。
  2. 数据操作语言:DML(Data Manipulation Language)语言,供用户实现对数据的追加、删除、更新、查询操作。
  • 结构化查询语言SQL
  • 数据库DB
  • 表table
  • 行row   => 记录record
  • 列column  => 字段field

(三)数据库系统(DBS)

        数据库系统(Database System,DBS):数据库管理系统 + 数据库 + 应用程序 + 用户(DBA、应用程序员、终端用户)。

(四) 数据库的常用操作方式

一、DOS命令:

  1. 连接远程主机:mysql -h 主机名/IP地址 -P端口号 -u 用户名 -p 密码
  2. 连接本机主机:mysql -u用户名 -p密码

二、客户端(可视化软件‘Navicat):

(五)MySQL架构

C/S架构:
 服务端管理和存储数据
 客户端发送操作请求


二、MySQL备份与还原

(一)mysql的备份与还原

(1)通过navicat备份和还原数据库

 (2)通过mysqldump备份数据库

        Mysqldump是mysql自带的逻辑备份工具,其备份形式是复制原始的数据库对象产生一组可执行的语句脚本。

备份命令mysqldump格式:mysqldump -h主机名  -P端口 -u用户名 -p密码 –database 数据库名 > 文件名.sql

1、备份MySQL数据库某个(些)表
mysqldump -hhostname -uusername -ppassword databasename specific_table1 specific_table2 > backupfile.sql
2、同时备份多个MySQL数据库
mysqldump -hhostname -uusername -ppassword –databases databasename1 databasename2 databasename3 > multibackupfile.sql

(3)通过备份脚本还原数据库

法一:用MYSQL 自带的mysql命令还原数据库

还原命令格式:mysql –u root –p  [dbname] <bakdb.sql

说明:

  • bakdb.sql为备份脚本文件名,在文件名前面可以指定路径
  • 如果备份脚本包含数据库创建语句,不可加[dbname]
  • 如果备份脚本不含数据库创建语句,要加[dbname],指定还原的数据库名

 法二:使用source语句还原数据库

还原命令格式:mysql>  source  bakdb.sql;

说明

  • bakdb.sql为备份脚本文件名,在文件名前面可以指定路径
  • 首先要登录到mysql命令行状态,才可用source 语句还原数据库
  • 如果备份脚本不包含数据库创建语句,要先创建数据库,再用use语句进入数据库,才可用source 语句还原数据库


三、MySQL 密码重置

(一)Linux系统下MySQL密码重置

第一步:修改配置文件

1.1修改配置文件
vim /etc/my.cnf
1.2 配置文件最后加上如下语句,并保存退出
skip-grant-tables 
1.3 重启mysql服务: service mysqld restart

第二步:免密码登录到mysql

  • mysql或者mysql -u root -p
  • password直接回车 

第三步:修改新密码

  • use mysql

  • update user set password=password('11223344') where user='root' #将root用户密码设置为11223344

 第四步:刷新权限

  • flush privileges #刷新一下权限

(二)Windows系统下MySQL密码重置

https://xiaochuhe.blog.csdn.net/article/details/122286149


四、Mysql基本操作命令

(一)sql语言简介

(1)查询语言(QL)
    查询语言用来对已存在的数据库中的数据按照指定的组合、条件表达式或排序进行检索。它的基本结构是由SELECT子句、FROM子句、WHERE子句组成的查询块。

(2)数据操纵语言(DML)
    DML的命令用来改变数据库中的数据,它有3个基本语句:INSERT (插入) 、UPDATE(修改)、DELETE(删除)。

 (3)数据定义语言(DDL)
    DDL用来创建数据库中的各种对象,包括数据库模式、表、视图、索引、同义词、聚簇等,它的基本语句有:CREATE DATABASE、CREATE TABLE、CREATE VIEW、CREATE INDEX等。

(4)数据控制语言(DCL)
    DCL用来授予或回收访问数据库的某种特权,控制数据操纵事务的发生时间及效果、对数据库进行监视等。数据控制基本语句有:GRANT、REVOKE、COMMIT、ROLLBACK、LOCK、UNLOCK等。

 (二)sql查询语句实操

一.查询全部的列

例1、查询全部注册人员的详细记录。

 SELECT * FROM user

二、选择表中的若干元组

        消除取值相同的行,如果要去掉结果表中的重复行,可通过使用DISTINCT实现,DISTINCT要写在SELECT关键字的后边,其他修饰符和查询列标的前边。


例2 在充值表中查询有哪些用户进行了充值,要求列出用户的ID,去掉重复列。

SELECT distinct userid FROM recharge

三、查询满足条件的元组

    查询满足条件的元组是通过WHERE子句实现的。
WHERE子句的格式为:
WHERE <查询条件> {<判定运算1>,<判定运算2>,…}
其中,判定运算其结果取值为 TRUE、FALSE 和 UNKNOWN。

判定运算的语法分类如下:
    <表达式1>{=|<|<=|>|>=|<=>|<>|!=}<表达式2>
    <表达式1>[NOT]LIKE<表达式2>
    <表达式1>[NOT][REGEXP|RLIKE]<表达式2>
    <表达式1>[NOT]BETWEEN<表达式2>AND<表达式3>
    <表达式1>IS[NOT]NULL

例3、查询姓名为'Dylan'的注册人员信息

SELECT *
FROM user
WHERE name='Dylan'

例4、查询所有余额在1000元以上的注册人员姓名、余额和银行卡号。

SELECT name,Balance,AccountNumber
FROM user
WHERE Balance>=1000

四、确定范围

   确定范围的谓词为:BETWEEN…AND
格式为:
   列名|表达式[NOT]BETWEEN 下限值 AND 上限值
   BETWEEN…AND 一般用于对数值型数据和日期型进行比较。列名或表达式的类型要与下限值或上限值的类型相同。
   NOT BETWEEN … AND 含义正好相反

例5 查询余额在500-1000元之间注册人员的姓名、身份证号、余额。

SELECT name,IdCard,Balance
FROM user
WHERE Balance BETWEEN 500 and 1000

等价于

SELECT name,IdCard,Balance
FROM user
WHERE Balance>=500 and Balance <=1000

五、字符串匹配

LIKE 用于查找指定列名与匹配串常量匹配的元组。
   LIKE 运算符的一般形式为:
[NOT] LIKE  ‘字符串’
MYSQL支持如下2种通配符:
_(下划线):匹配任意一个字符;a_b
%(百分号):匹配0个或多个字符;a%b

例6 查询名字中有‘A’的注册人员详细信息。

SELECT *
FROM user
WHERE Name like 'A%'

六、使用CASE子句对查询结果进行分析

CASE 表达式的语法格式:
CASE 测试表达式
WHEN 简单表达式1 THEN 结果表达式1
WHEN 简单表达式2 THEN 结果表达式2
      ……
WHEN 简单表达式n THEN 结果表达式n
[ELSE 结果表达式n+1]
END

例7 查询全部注册人员的余额级别,列出姓名和银行卡号,余额级别如下定义:
当余额大于等于1000时,在结果中显示‘big’;
当余额大于等于100,小于1000时,在结果中显示‘middile’;
当余额小于100时,在结果中显示‘smile’;

select name,AccountNumber,
case
when Balance>=1000 then 'big'
when Balance>=100 and Balance<1000 then 'middile'
when Balance<100 then 'smile'
end as level
from user

七、对查询结果进行排序
 可将查询结果按照某个列或某几个列的顺序进行排序,排序可以是从小到大(升序),也可以是从大到小(降序)。排序子句的格式为:
 ORDER BY <列名> [DESC/ASC][,…n]

例8 查所有注册人员信息,按余额降序排序

select *
from user
order by Balance desc

八、使用聚合函数汇总数据
    聚合函数也称为集合函数或计算函数,其作用是对一组值进行计算并返回一个单值。
 mysql常用的聚合函数如下:

例9 查询充值总金额.

select sum(RechargeAmount)
from recharge


例10 查询注册总人数

select count(userid)
from user

例11 查询平均余额

select avg(Balance)
from user

九、多表连接查询

若一个查询涉及到两个或两个以上的表,则称之为多表连接查询。
内连接:inner join或 join
外连接:
    左外连接:left outer join 或left join
    右外连接:right outer join 或right join
交叉连接:cross join(相当于两表的笛卡尔积,取证一般用不到)

内连接语法如下:
SELECT <列名1,列名2 …> FROM <表名1> INNER JOIN <表名2> [ ON子句]
例12 查询有充值记录的注册人员信息及充值信息。

select *
from user inner join recharge
on user.UserId=recharge.UserId

外连接的语法格式为:
SELECT <列名1,列名2 …> FROM <表名1>  LEFT|RIGHT [OUTER] JOIN <表名2> [ ON子句]
LEFT OUTER JOIN称为左外连接,RIGHT OUTER JOIN称为右外连接。左联接的含义是不管表1中的元组是否满足连接条件,均输出表1的内容;右外连接的含义是不管表2中的元组是否满足连接条件,均输出表2的内容。

例13 查询全部人员的充值信息,没充值的也要显示。

select *
from user left join recharge
on user.UserId=recharge.UserId
此查询也可以用右外连接实现:
select *
from recharge right join  user
on recharge.UserId=user.UserId

 十、使用limit限制结果集

使用limit的格式为:
  <LIMIT> [<位置偏移量>,] <行数>
LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。 第一个参数“位置偏移量”指示 MySQL 从哪一行开始显示,是一个可选参数,如果不指定“位置偏移量”,将会从表中的第一条记录开始(第一条记录的位置偏移量是 0,第二条记录的位置偏移量是 1,以此类推);第二个参数“行数”指示返回的记录条数。

例14 查询余额最多的三个注册人员姓名、银行卡号、余额。

select name,AccountNumber,Balance
from user
order by Balance desc
limit 3

十一、子查询

如果一个SELECT语句是嵌套在一个SELECT、INSERT、UPDATE或DELETE语句中,则称之为子查询或内层查询;而包含子查询的语句则称之为主查询或外层查询。
含子查询的语句通常采用以下格式中的一种:
     WHERE 表达式 [NOT] IN (子查询)
     WHERE 表达式 比较运算符 (子查询)

例15 查询充值总额大于10000元的注册人员姓名、身份证号。

select name,IdCard
from user
where userid in
(select userid
from recharge
group by userid
having sum(RechargeAmount)>10000)


 五、数据库日志及应用

(一)数据库事务

ACID,是指在可靠数据库管理系统(DBMS)中,事务(transaction)所应该具有的四个特性:
原子性(Atomicity)
事务是一个不可再分割的工作单位,事务中的操作要么都发生,要么都不发生。
一致性(Consistency)
事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。这是说数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。
隔离性(Isolation)
多个事务并发访问时,事务之间是隔离的,一个事务不应该影响其它事务运行效果。
持久性(Durability)
事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。

(二)Mysql数据库日志

查询相关日志信息:SHOW  GLOBAL VARIABLES LIKE '%log%';
错误日志 error log
默认包含服务器启动和关闭过程中的信息、服务器运行过程中的错误信息、事件调度器运行一个事件时产生的信息、在从服务器上启动服务器进程时产生的信息。
查询日志 general log
记录用户的所有操作,其中包含增删查改等信息
慢查询日志 slow query log
记录执行时间超过指定时间的查询语句,以便优化查询语句。
事务日志(重做:redo log,回滚:undo log,innoDB独有)
帮助提高事务的效率。
二进制日志(变更日志) bin log
记录修改数据或有可能引起数据改变的mysql语句,并且记录了语句发生时间、执行时长、操作的数据等等。

(三)通过General_log日志分析数据库、表、字段

开启 general log可将所有到达MySQL Server的SQL语句记录下来。电子数据取证分析过程中可以开一会儿general log以供确定网页调用了哪些库、表、字段

先执行sql指令:show variables like‘%log%’;
可以看到默认general_log是OFF的,

(四)通过binlog日志恢复删除的数据

命令格式: mysqlbinlog 日志文件 [option] |mysql -h地址 -u用户名 -p密码  -P端口

[option]
--start-position 开始点 --stop-position 结束点
--start-date 开始时间  --stop-date  结束时间

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

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

相关文章

【Unity云消散】简单理论基础:实现边缘光

写在前面 既然想要实现云的消散效果&#xff0c;那么边缘光如何计算也是一个重点。 在Unity Shader入门精要的14章&#xff0c;介绍轮廓线渲染就介绍了——轮廓边检测&#xff0c;而边缘光也是需要先检测出轮廓边再进行的。 Unity3D Shader系列之边缘光RimLight 这篇博客给…

Go专家编程读书小记

文章目录协程进程和线程进程&#xff1a;进程间通信&#xff1a;线程&#xff1a;区别&#xff1a;协程GMP模型调度策略内存管理内存分配span&#xff1a;cache&#xff1a;central&#xff1a;heap&#xff1a;垃圾回收常见的垃圾回收算法&#xff1a;三色标记&#xff1a;垃圾…

【NI Multisim 14.0原理图设计基础——查找元器件】

目录 序言 一、查找元器件 &#x1f34d;1.浏览元器件 &#x1f34d;2.搜索元器件 &#x1f34d; 3.显示找到的元器件及其所属元器件库 &#x1f34d; 4.加载找到元器件的所属元器件库 序言 NI Multisim最突出的特点之一就是用户界面友好。它可以使电路设计者方便、快捷地…

大资金现金管理的利器:稳定币网格做市策略

数量技术宅团队在CSDN学院推出了量化投资系列课程 欢迎有兴趣系统学习量化投资的同学&#xff0c;点击下方链接报名&#xff1a; 量化投资速成营&#xff08;入门课程&#xff09; Python股票量化投资 Python期货量化投资 Python数字货币量化投资 C语言CTP期货交易系统开…

从一条记录说起—— InnoDB 记录结构

准备工作 到现在为止&#xff0c;MySQL对于我们来说还是一个黑盒&#xff0c;我们只负责使用客户端发送请求并等待服务器返回结果&#xff0c;表中的数据到底存到了哪里&#xff1f;以什么格式存放的&#xff1f;MySQL是以什么方式来访问的这些数据&#xff1f;这些问题我们统…

springboot构造树形结构数据并查询的方法

因为项目需要,页面上需要树形结构的数据进行展示(类似下图这样),因此需要后端返回相应格式的数据。 不说废话,直接开干!!! 我这里用的是springboot+mybatis-plus+mysql,示例的接口是查询一级权限以及二级权限、三级权限整个权限树… 下面是导入的maven依赖 <depe…

SSD核心设计

摘要本文介绍了此类设计选择的分类&#xff0c;并使用跟踪驱动的模拟器和从实际系统中提取的工作负载跟踪分析各种配置的可能性能。我们发现SSD性能和生命周期对工作负载非常敏感&#xff0c;并且通常较高的复杂系统问题出现在存储堆栈中甚至在分布式系统中&#xff0c;与设备固…

9. 回文数

文章目录题目描述方法一 转换为字符串方法二 转存入数组方法三 数学方法倒转数字方法四 对折参考文献题目描述 给你一个整数 x &#xff0c;如果 x 是一个回文整数&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 回文数是指正序&#xff08;从左向右&…

树脂吸附处理冶炼含钴丨废水四氯化三钴、草酸钴废水回收钴

生产过程中会产生含钴废水&#xff0c;现有技术中&#xff0c;处理含钴废水的方法主要有化学沉淀法、吸附法、膜分离法等。 对于化学沉淀法&#xff0c;原理是通过向废水中添加一定的沉淀剂&#xff0c;使其与废水中溶解性的钴离子反应生成沉淀&#xff0c;通过重力沉降去除钴…

ArcGIS 前端动态地图与要素服务符号化的区别小结

在ArcGIS中&#xff0c; 除了在桌面端做配图之外&#xff0c;一些符号化工作也可以在代码端去进行设置&#xff0c;这里简单的做了一些测试及小结。 一、服务的区别 在ArcGIS中最基础的两种数据服务就是动态地图服务&#xff08;MapServer&#xff09;和要素服务&#xff08;…

Spring Boot 教程

Spring Boot 教程Spring Boot 基础开发Spring Boot 简介Spring Boot 第一个项目Spring Boot 项目启动机制Spring Boot 数据访问Spring Boot 集成 MyBatisSpring Boot 运行管理Spring Boot 日志管理Spring Boot 异常处理Spring Boot 定时任务Spring Boot 使用拦截器Spring Boot …

C#汽车美容管理服务系统源码 功能强大代码完整,开源分享!

一套完整的汽车美容管理服务系统源码&#xff0c;专门服务于汽车美容4s店&#xff0c;终端功能强大而又简便实用&#xff0c;界面友好而美观&#xff0c;让用户更好的体验度,基于jquery技术实现页面无刷新,可广泛适用于大型以及小型汽车美容机修等公司&#xff0c;包含 洗车、机…

【异常】记一次前端因资源无法加载导致白屏异常问题

一、背景 自从运维同事强烈要求前端的环境要使用多套的&#xff0c;参考文章 【项目】参考若依的前端框架去多环境 于是一番捣鼓与改造之后&#xff0c;看似已经顺利了 但运维说&#xff0c;前端还是有问题&#xff0c;需要他帮我改下&#xff0c;于是改了如下内容 什么嘛&a…

常用的git管理逻辑

//首先创建新的分支 git branch new_branch//切换到另一个分支 git checkout new_branch//修改代码&#xff0c;添加新的文件 git add .//查看文件的状态 git status//打包自己的改变 git commit -m "comment"//推到远程服务器上 git push origin new_branch// 拉远程…

2022年度打印机行业数据报告:十大热门品牌销量排行榜

随着5G技术的发展&#xff0c;越来越多的设备与人员将通过网络实现互联互通&#xff0c;打印的输入端口与输出端口变得多样与兼容&#xff0c;打印机也在越来越多的领域发挥着强大的作用。并且&#xff0c;随着电子化教学的不断推进以及普及&#xff0c;加之线上办公等场景的需…

Hudi系列2:Hudi安装

文章目录编译环境准备一. 下载并解压hudi二. maven的下载和配置2.1 maven的下载和解压2.2 添加环境变量到/etc/profile中2.3 修改为阿里镜像三. 编译hudi3.1 修改pom文件3.2 修改源码兼容hadoop33.3 手动安装Kafka依赖3.4 解决spark模块依赖冲突3.4.1 修改hudi-spark-bundle的p…

LeetCode 3. 无重复字符的最长子串

&#x1f308;&#x1f308;&#x1f604;&#x1f604; 欢迎来到茶色岛独家岛屿&#xff0c;本期将为大家揭晓LeetCode 3. 无重复字符的最长子串&#xff0c;做好准备了么&#xff0c;那么开始吧。 &#x1f332;&#x1f332;&#x1f434;&#x1f434; 目录 一、题目名称…

(02)Cartographer源码无死角解析-(48) 2D点云扫描匹配→暴力搜索匹配原理讲解,扫面匹配总体框架梳理

讲解关于slam一系列文章汇总链接:史上最全slam从零开始&#xff0c;针对于本栏目讲解(02)Cartographer源码无死角解析-链接如下: (02)Cartographer源码无死角解析- (00)目录_最新无死角讲解&#xff1a;https://blog.csdn.net/weixin_43013761/article/details/127350885 文末…

2022消费市场并未降级?麦肯锡调研报告解读

近日全球知名咨询公司麦肯锡发布《2023中国消费者报告》&#xff0c;重磅发布重塑中国消费市场的五大趋势。 趋势一&#xff1a;中等收入人群继续壮大 MGI数据显示&#xff0c;2019~2021年&#xff0c;年收入超过16万元人民币&#xff08;2.18万美元&#xff09;的中国城镇家…

nacos配置动态刷新及监听到变化触发一些方法

介绍在使用spring 时&#xff0c;动态更新配置是常见的&#xff0c;属性值更新&#xff0c;但是需要开启支持刷新功能&#xff0c;一个是spring.cloud.nacos.config.isRefreshEnabledtrue; 这个值一般是默认的&#xff0c;可以在nacosConfigProperties这个类中看到。还要在扩展…