Mysql服务器的基本配置及访问办法
预备知识
存在即合理,从两个问题开始引入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)
2、MySQL密码为安装时所设,键入后回车,界面如下。
3、运行下图命令,查看User表。
1 | use mysql |
4、运行update命令,将MySQL数据库root用户的口令改成123456。其中最后一句命令flush privileges的意思是强制刷新内存授权表,否则用的还是缓冲中的口令,这时非法用户还可以用root用户及空口令登录,直到重启MySQL服务器。
1 | update user set password = password('123456') where user='root'; |
5、运行delete命令,删除空用户。Host字段为localhost的匿名用户拥有所有的权限,就是说本地用户用空的用户名和空的口令登录MySQL数据库服务器可以得到最高的权限,所以匿名用户必须删除。
1 | delete from user where user=''; |
6、Desc User
User表是授权表中最重要的一个,运行下图命令,列出可以连接服务器的用户及其加密口令,并且它指定它们有哪种全局(超级用户)权限。在User表启用的任何权限均是全局权限,并适用于所有数据库。所以我们不能给任何用户访问MySQL. User表的权限。
1 | desc user; |
7、Desc DB
运行下图命令,查看DB表,列出所有数据库,而用户有权限访问它们。在这里指定的权限适用于一个数据库中的所有表。
1 | use mysql; |
8、Desc Host
Host表如下图所示,与DB表结合使用在一个较好层次上控制特定主机对数据库的访问权限,这可能比单独使用DB好些。这个表不受GRANT和REVOKE语句的影响。
1 | desc host; |
9、设置用户权限
如下图命令用于在本地增加一个具有所有权限的test 用户(超级用户),密码是test。ON子句中的.意味着“所有数据库、所有表”。with grant option表示它具有grant权限。用grant语句创建权限是不需要再手工刷新授权表的,因为它已经自动刷新了。
1 | grant all privileges on *.* to test@localhost identified by 'test' with grant option; |
查看运行结果,如下图。
10、删除用户的权限,并删除用户
1 | revoke all on *.* from test@localhost; |
删除用户权限。
删除用户test。
到这就OK啦