【网络安全 --- MySQL数据库】网络安全MySQL数据库应该掌握的知识,还不收藏开始学习。

news2025/7/21 9:22:02

四,MySQL

4.1 mysql安装

#centos7默认安装的是MariaDB-5.5.68或者65,
#查看版本的指令:[root@web01 bbs]# rpm -qa| grep mariadb
#安装mariadb的最新版,只是更新了软件版本,不会删除之前原有的数据。
#修改yum源的配置文件
vim /etc/yum.repos.d/mariadb.repo
i[mariadb]
name=mariadb laster version
baseurl=http://mirrors.tuna.tsinghua.edu.cn/mariadb/yum/10.6/centos7-amd64/
gpgcheck=0
#yum安装mariadb
yum install mariadb-server -y
#重新启动mariadb并设置开机自启
systemctl start mariadb
systemctl enable mariadb
# 安装完之后建议运行一下安全初始化的动作:
mysql_secure_installation

4-2 授权

#授权 ,默认情况下mysql和mariadb都是不允许root用户远程连接登录的。
# grant 操作(增删改查,all) on 库名.表名 to 用户名@'%' identified by '密码';

grant all on *.* to root@'192.168.31.%' identified by 'aini';
grant all on wordpress.* to wordpress@'192.168.61.%' identified by '123456';
grant all on wordpress.t1 to jaden@'192.168.61.%' identified by '123';  #jaden用户只能对menu表进行操作

# 网站代码中连接数据库的时候使用的是哪个用户,那个用户有什么权限,那么网站代码就能对数据库做什么操作。

## 查看某个用户有哪些权限
show grants for root@'%';

# 单独创建用户
create user wang@'%' identified by '123';

# 单独创建的用户是没有任何权限的,只能登录,需要授权
grant all on wordpress.* to wang@'%';

# 上面两条就等于我们前面授权加创建用户的一条指令。
# 删除用户
drop user wang@'%';

# 查看用户的权限
show grants for jaden@'192.168.61.%';

# 回收权限: 注意:只有在本机登录的root用户才有这个能力
revoke select on wordpress.t1 from jaden@'192.168.61.%'; 
show grants for jaden@'192.168.61.%';

4-3 登录修改密码

#使用普通用户登录
mysql -u wordpress -p123456 -h 10.0.0.7
#默认的数据文件存储位置是
/var/lib/mysql/
#/root/.mysql_history 记录了我们做的历史sql指令
# 修改用户密码
#安全初始化,可以修改root用户的密码:mysql_secure_installation
格式:mysql> set password for 用户名@localhost = password('新密码'); 
例子:mysql> set password for root@localhost = password('123'); 
# 查询当前是在哪个库里面
MariaDB [mysql]> select database();
#查看表结构
desc songs;
+---------+--------------+------+----

4-4 MySQL数据类型

int   整形 数字   适合存储:年龄, 加减运算
float 浮点型     适合存储:余额 加减运算
char   字符串     适合存储:不做加减运算 身份号码 密码,单行信息
text   文本       适合存储: 适合多行信息,小说,商品描述
enum   枚举       适合存储: 固定选项,多选一
date   日期类型   适合存储:时间,一般存储的是unix时间戳,从1970.1.1 0:0:0到现在过了多少秒,这个时间戳是可以转化为具体的时间				日期的。
boolean 布尔类型   true/false 对应数字就是0/0

4-5 所有的整型int

image-20230718204445735

4-6 字符串类型

image-20230718204510252

4-7 text类型

image-20231017194357601

4-8 MySQL完整性约束

not null # 不能为空,默认是可以为空的
default   # default 100,意思是默认值为100
unique   # 唯一
auto_increment # 自增
primary key #主键:not null+unique,还自带auto_increment自增属性,但是每个表里面只能有一列能为primary key主键列
unsigned #只能存正整数,默认是可以存正数和负数的

4-9 MySQL数据表操作

#切换库
use linux;
#创建表 #每个web项目其实都会创建很多个表来存储不同的数据
create table 表名(
字段名1 类型[(宽度) 约束条件],
字段名2 类型[(宽度) 约束条件],
    字段名3 类型[(宽度) 约束条件]
);
示例:
mysql> create table jaden(  
    -> id int, 
    -> name varchar(50),
    -> age int(3)
    -> );
#查看一下mysql帮我们创建表的时候的详细指令
	show create table jaden;
	
#创建库和创建表的时候还可以指定字符集编码,默认字符集是Latin。
	DEFAULT CHARACTER SET utf8mb4
	create table jaden(id int, name varchar(50)) ENGINE=MyISAM DEFAULT CHARSET=utf8;
# ENGINE=MyISAM这是指定存储引擎,这个后面说。

#往表里面插入数据
    insert into jaden(id,name,age) value(1,'xx',18); # 插入单条数据
    insert into jaden(id,name,age) values(2,'xx2',15),(3,'xx3',19); #插入多条数据
    
#创建只有name列的表t1;
	create table t1(name char(6));

#查看表结构
	desc t1;

#往表t1插入数据
    insert t1 value('zhang');
    insert t1 value('li');

#查询t1表中所有数据
	select * from t1;

#指定字符集的创表语句
	create table t2(name char(6),age int(3)) default charset=utf8;

#往表t2插入数据
    insert t2 value('张三',20);
    insert t2 value('李四',60);

#创建表t4
	create table t4(name char(6),age int(3) default 0 ) default charset=utf8;

#指定列插入数据
	insert t4(name) values('张三'),('李四');

#查询结果
    mysql> select * from t4;
    +--------+------+
    | name   | age |
    +--------+------+
    | 张三   |    0 |
    | 李四   |    0 |
    +--------+------+
    2 rows in set (0.00 sec)

##修改表
#修改字段的长度
	alter table s2 modify name char(10);

#查看创表语句
	show create table s2;

#增加字段
	alter table s2 add age int(3);

#删除字段
	alter table s2 drop age;

#ALTER TABLE 表名 ADD 字段名 数据类型 [完整性约束条件…] FIRST; #添加这个字段的时候,把它放到第一个字段位置去。
#ALTER TABLE 表名 ADD 字段名 数据类型 [完整性约束条件…] AFTER 字段名;#after是放到后的这个字段的后面去了,我们通过一个first和一个after就可以将新添加的字段放到表的任意字段位置了。

# 修改表的字符集
	alter table 表名 charset=utf8mb4;

#使用where条件删除单条数据
	delete from t5 where name='zhangsan';

#删除所有数据
	delete from t5;

#单条件修改:
	update t5 set password='123' where name='wangwu';

#单条件修改多列:
	update t5 set password='123',name='xxx' where name='wangwu';

#多条件修改
    update t5 set password='123' where name='wangwu' and id=1;
    update t5 set password='123' where name='wangwu' or id=1;

#修改所有数据
	update t5 set password='123456';

4-10 MySQL查询数据

#sql查询
## city有多少个中国的城市?
select * from city where CountryCode='CHN';

## 查询city表中,山西省的城市名?
select * from city where district='shanxi';

## 查询city表中,山西省和河北省的城市名?
select * from city where district='shanxi' or district='hebei' ;

## 查询city表中,山西省和河北省的城市中人口大于100w?
select * from city where (district='shanxi' or district='hebei') and Population >1000000 ;

## 查询city表中,要求只显示城市名和人口数量,山西省和河北省的城市名按人口数量排序,升序?
select Name,Population from city where district='shanxi' or district='hebei'order by Population ;

## 查询city表中,要求只显示城市名和人口数量,山西省和河北省的城市名按人口数量排序,降序?
select Name,Population from city where district='shanxi' or district='hebei'order by Population desc ;

## 查询city表中,要求只显示城市名和人口数量,山西省和河北省的城市名按人口数量前5名;
select Name,Population from city where district='shanxi' or district='hebei'order by Population desc limit 5;

## 查询city表中,要求只显示城市名和人口数量,山西省和河北省的城市名按人口数量第2名和第3名;
select Name,Population from city where district='shanxi' or district='hebei'order by Population desc limit 1,2;

## 查询city表中,所有中国省份中带an的城市
select * from city where countrycode='chn' and district like '%an%' ;

## 查询city表中,所有中国的城市人口在89000和89999之间的城市
select * from city where countrycode='chn' and Population  between 89000 and 89999 ;

## 查询city表中,要求只显示城市名和人口数量,查询CHN人口最多的前5个城市?
## 查询city表中,要求只显示城市名和人口数量,查询CHN人口最少的前5个城市?
## 查询中国的城市数量?
select count(name) as 中国城市总数 from city where countrycode='CHN';

## 查询世界的国家数量?
select count(name) from country;

## 查询中国的总人口?
select sum(population) from city where countrycode='chn';

## 把多行合并成一行
select group_concat(name) from city where countrycode='chn' and district='hebei';

## 把多列合并成一列
select concat(Name,"#",CountryCode,"#",District) from city where countrycode='chn' and district='hebei' ;

4-11 MySQL 索引

#增加主键索引(要求结果唯一)
	alter table t100w add PRIMARY KEY(id);

#创建普通索引
	alter table t100w add index num(num);
	
#创建联合索引
	alter table t100w add index lianhe(k1,k2);

#查看索引
	show index from t100w;

#删除普通索引
	alter table t100w  drop index lianhe;

#删除主键索引
	alter table t100w  drop  PRIMARY key;

#创建表的时候,指定索引
	create table zhu2(id int(8) primary key AUTO_INCREMENT ,name char(10),passwd char(10));

4-12 MySQL Union

#合并两个select查询结果
CREATE TABLE `c1` (
  `ID` int NOT NULL AUTO_INCREMENT,
  `Name` char(35) NOT NULL DEFAULT '',
  `District` char(20) NOT NULL DEFAULT '',
  `Population` int NOT NULL DEFAULT '0',
 PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `c2` (
  `ID` int NOT NULL AUTO_INCREMENT,
  `Name` char(35) NOT NULL DEFAULT '',
  `District` char(20) NOT NULL DEFAULT '',
  `Population` int NOT NULL DEFAULT '0',
 PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

insert into c1(ID,Name,District,Population) select ID,Name,District,Population 
from city where CountryCode='CHN' and District='Hebei';

insert into c2(ID,Name,District,Population)   select ID,Name,District,Population 
from city where CountryCode='CHN' and District='Henan';

select * from c1 union select * from c2 order by Population;

#sql注入中经常会使用的
select * from c1 union select 1,2,3,user();

4-13 mysql存储引擎

MyISAM: ## 读性能好,写的性能差     表级锁 每张表,三个文件
innodb## 读性能微弱,写的性能好   行级锁 每张表,两个文件

4-14 MySQL找回root密码

#b适用于mariadb 10.6
1.修改配置文件
    vim /etc/my.cnf.d/server.cnf
    [mysqld]
    skip-grant-tables
    
2.启动mariadb
	systemctl start mariadb
	
3.空密码 登录数据库并执行修改密码
    use mysql;
    update user set password=password('123') where user='root' and host='localhost';
    flush privileges;
    
4.删除配置文件中前面增加的skip-grant-tables
5.重启启动mariadb
	systemctl restart mariadb
6.使用新密码验证
	mysql -uroot -p123

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

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

相关文章

完全掌握Nginx的终极指南:这篇文章让你对Nginx洞悉透彻

Nginx是一款轻量级的Web服务器、反向代理服务器,由于它的内存占用少(一个worker进程只占用10-12M内存),启动极快,高并发能力强,在互联网项目中广泛应用。 上图基本上说明了当下流行的技术架构,其…

软考系统架构设计师考试冲刺攻略

系统架构冲刺攻略 上篇为综合知识,介绍了系统架构设计师应熟练掌握的基本知识,主要包括绪论、计算机系统、信息系统、信息安全技术、软件工程、数据库设计、系统架构设计、系统质量属性与架构评估、软件可靠性、软件架构的演化和维护、未来信息综合技术等…

贪心算法:猫粮兑换最大数量的五香豆

小老鼠存了一些猫粮,他想到猫猫库房兑换最大数量的五香豆。 (本笔记适合熟悉循环和列表的 coder 翻阅) 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ Free:大咖免费“圣经”教程《 python 完全自学教程》,不…

凉鞋的 Unity 笔记 201. 第三轮循环:引入变量

201. 第三轮循环:引入变量 在这一篇,我们进行第三轮 编辑-测试 循环。 在之前我们编写了 输出 Hello Unity 的脚本,如下: using System.Collections; using System.Collections.Generic; using UnityEngine;public class FirstGameObject …

低代码加速软件开发进程

IT 团队依靠笨重的软件开发流程和密集型的手工编码来构建可靠的现代应用程序的时代即将结束。随着新自动化技术的兴起、开发人员的短缺,以及渴望创新的客户和最终用户的需求迅速提高,软件行业被迫寻求替代方法,要求不仅提供服务和产品&#x…

那些你面试必须知道的JS知识点

目录 1、JS数据类型有哪些?2、延迟加载JS有哪些方式?3、 和 有什么不同?4、null和undefined的区别5、JS微任务和宏任务6、作用域考题7、JS对象考题8、JS作用域this指向原型考题9、JS判断变量是不是数组,你能写出哪些方法&#xff…

四、Node Exporter

一、Exporter结束 可以通过一个 metrics 接口为 Prometheus 提供监控指标,最好的方式就是直接在目标应用中集成该接口,但是有的应用并没有内置支持 metrics 接口,比如 linux 系统、mysql、redis、kafka 等应用,这种情况下就可以单…

数字孪生技术如何提高仓储效率?

随着科技的不断演进,数字孪生技术已然成为仓储管理领域的一股强大力量,带来了前所未有的变化和机遇。数字孪生技术的出现,为仓储行业带来了前所未有的智能化和高效化,从仓库布局到库存管理,从人员配备到安全控制&#…

基于马尔可夫随机场的图像去噪算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1、马尔可夫随机场的基本原理 4.2、基于马尔可夫随机场的图像去噪算法 5.算法完整程序工程 1.算法运行效果图预览 原图: 加入噪声的图像: 滤波后的图像 迭代过程…

人工智能(pytorch)搭建模型20-基于pytorch搭建文本生成视频的生成对抗网络,技术创新点介绍

大家好,我是微学AI,今天给大家介绍一下人工智能(pytorch)搭建模型20-基于pytorch搭建文本生成视频的生成对抗网络,技术创新点介绍,随着人工智能和深度学习技术的飞速发展,文本到视频生成已经成为计算机视觉领域中一个重…

【网络安全】php代码审计-sql注入进阶篇

前言 现在各大网站都在使用waf对网站或者APP的业务流量进行恶意特征识别及防护,,避免网站服务器被恶意入侵。所以我们就需要绕过waf,这篇文章就用代码审计的方式给大家讲解一些sql的绕过技巧。 点击此处即可领取282G网络安全学习籽料 关键…

FlashAttention计算过程梳理

FlashAttention 的速度优化原理是怎样的? 从 FlashAttention 到 PagedAttention, 如何进一步优化 Attention 性能 FlashAttention图解(如何加速Attention) FlashAttention开源代码 Transformer Block运算量解析 在self-attention模块中&#…

【UE】安装下载的插件文件夹到虚幻引擎

比如我淘宝上购买了一个插件文件夹,解压后内容如下: 找到电脑上虚幻引擎(这里以UE5.1为例)的位置,可以看到里面有一个名字为“Plugins”的文件夹 在此文件夹中找到“Marketplace”文件夹 然后将下载的插件文件夹放到“…

智慧远程医疗服务:从零开始搭建互联网医院APP

互联网医院APP作为远程医疗服务的一部分,正在为患者和医生带来更便捷的医疗体验。本文将探讨如何从零开始构建一个互联网医院APP,包括关键步骤、技术要点和挑战。 一、确定项目目标和范围 在开始之前,您需要明确定义您的互联网医院APP的目标…

AI_Neural Network_Note (二)

NN Predict logistic regression 预测的过程其实只是based on 一个简单的逻辑回归logistic regression公式 z dot(w,x) b (x1 * w1 x2 * w2 x3 * w3) b dot(a,b): 向量a和向量b的点积(内积)运算。 点积是两个向量的对应分量相乘,并将…

什么是接口测试,接口测试怎么玩,接口自动化测试怎么玩?

前言 最近在找工作,因为是做纯服务端测试的,所以面试过程中面试官难免会问,怎么设计接口测试用例,怎么做接口自动化测试?会象征性的考一下基本功。 下面就接口测试,或者说服务端测试,梳理一下我…

Spring framework Day19:Spring AOP xml配置示例二

一、开始学习 1、新建项目&#xff0c;结构如下 2、添加 spring 依赖 <!-- spring 的核心依赖 --><dependencies><!-- https://mvnrepository.com/artifact/org.springframework/spring-context --><dependency><groupId>org.springframework&l…

2023,简历石沉大海?软件测试岗位真的已经饱和了....

各大互联网公司的接连裁员&#xff0c;政策限制的行业接连消失&#xff0c;让今年的求职雪上加霜&#xff0c;想躺平却没有资本&#xff0c;还有人说软件测试岗位饱和了&#xff0c;对此很多求职者深信不疑&#xff0c;因为投出去的简历回复的越来越少了。 另一面企业招人真的…

Redis数据结构之ziplist

前言 Redis 为了提高内存效率&#xff0c;设计了一种特殊的数据结构 ziplist&#xff08;压缩列表&#xff09;。ziplist 本质是一段字节数组&#xff0c;采用了一种紧凑的、连续存储的格式&#xff0c;可以有效地压缩数据&#xff0c;提高内存效率。 hash、zset 在数据量比较…