预备知识

存在即合理,从两个问题开始引入mysql

1、“这是什么?”

2、“为什么要有这个?”

什么是数据库?

数据库,是用来存储数据的。数据库由表组成,表由列组成。这个表就像Excel一样,它适合存放一些文字信息。比如,id、密码、电话号码、地址等等,但是它不适合存放单个大体量的文件对象,比如,电影、照片。

简单的举个栗子,比如说QQ中的数据库,会存放users的网名、密码、QQ号、个性签名等数据,但是qq空间的动态里的视频、音乐、图片可能就不会放在数据库里。

MySQL是什么?

MySQL是一种数据库软件。数据库和MySQL的关系,就像是聊天软件与QQ、微信的关系。世界上有各种各样的数据库,比如Oracle、MySQL、SQL Server等等,一般互联网公司都会用MySQL,因为它是免费、使用范围最广。

MySQL已经成为当前网络中使用最多的数据库之一,特别是在Web应用上,它占据了中小型应用的绝对优势。这一切都源于它的小巧易用、安全有效、开放式许可和多平台,更主要的是它与三大Web语言之一——PHP的完美结合。

SQL是什么

SQL是一种编程语言,就像Java、C++、Python。它是用来操纵数据库的一种语言。只需要上百个英文单词,SQL就能对数据进行让人眼花缭乱的操作。

为什么要有数据库?

数据库可以让很多人同时地进行访问、更改数据。而excel不能供一个大型系统使用,它的性能不够好。(想象一下数亿人同时操控一个Excel文件,啊,那真是不能想象,一定卡顿爆)


总的来说,数据库是一种数据存储系统,其中最具代表性的是mysql,我们使用sql语言对它进行操纵。

实验环境

用户系统:Windows操作系统

工具:MySQL5.5软件

数据库安全实验

1、安装MySQL

在MySQL官网上点download,进入MySQL Community server下载想要下载的版本,直接下载installer,不要下载zip压缩包(我下载的是5.5.29,截止到2021.07.19,最新版本是8.0.25,越稳定越好,随便下个5.5.29的)

几个非默认的页面需要注意一下(并非一直点next)

勾选server machine

勾选manual,并选择utf8

勾选include bin directory in windows path

等待四个自动勾选后安装完成

2、MySQL密码为安装时所设,键入后回车,界面如下。

3、运行下图命令,查看User表。

1
use mysql

4、运行update命令,将MySQL数据库root用户的口令改成123456。其中最后一句命令flush privileges的意思是强制刷新内存授权表,否则用的还是缓冲中的口令,这时非法用户还可以用root用户及空口令登录,直到重启MySQL服务器。

1
2
update user set password = password('123456') where user='root';
flush privileges;

5、运行delete命令,删除空用户。Host字段为localhost的匿名用户拥有所有的权限,就是说本地用户用空的用户名和空的口令登录MySQL数据库服务器可以得到最高的权限,所以匿名用户必须删除。

1
2
delete from user where user='';
flush privileges;

6、Desc User

User表是授权表中最重要的一个,运行下图命令,列出可以连接服务器的用户及其加密口令,并且它指定它们有哪种全局(超级用户)权限。在User表启用的任何权限均是全局权限,并适用于所有数据库。所以我们不能给任何用户访问MySQL. User表的权限。

1
desc user;

7、Desc DB

运行下图命令,查看DB表,列出所有数据库,而用户有权限访问它们。在这里指定的权限适用于一个数据库中的所有表。

1
2
use mysql;
desc db;

8、Desc Host

Host表如下图所示,与DB表结合使用在一个较好层次上控制特定主机对数据库的访问权限,这可能比单独使用DB好些。这个表不受GRANT和REVOKE语句的影响。

1
desc host;

9、设置用户权限

如下图命令用于在本地增加一个具有所有权限的test 用户(超级用户),密码是test。ON子句中的.意味着“所有数据库、所有表”。with grant option表示它具有grant权限。用grant语句创建权限是不需要再手工刷新授权表的,因为它已经自动刷新了。

1
2
grant all privileges on *.* to test@localhost identified by 'test' with grant option;
select User,Password from user;

查看运行结果,如下图。

10、删除用户的权限,并删除用户

1
2
3
revoke all on *.* from test@localhost;
delete from user where user='test';
flush privileges;

删除用户权限。

删除用户test。

到这就OK啦