一、什么是MySQL数据库?
概念:MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的RDBMS应用软件之一;
1、Mysql连接工具
因为几乎所有的数据库都是没有界面的,如果没有连接工具我们一般都是通过DOS命令来使用,但是这个通过命令行的方式不太方便,意味着我们要记下很多命令符;
例:Oracle可以直接搜索数据库,因为它只有一个数据库,分的是表空间,因此可以直接使用select语句;但在MySQL里面直接select语句理论上是不行的,它是分数据库的;
因此这种界面化的工具有很多命令是很难记的,过段时间就会忘记,这时候我们就需要界面工具来帮助我们;
这里我推荐两个界面工具,它可以实现界面化的操作,往后不需要我们再去敲记命令了:
navicat:该连接工具可以几乎可以连接任意数据库
sqlyog:该连接工具是专门做MySQL界面端的
2、特点
关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性
MySQL 使用标准的 SQL 数据语言形式。
支持大型的数据库,可以处理拥有上千万条记录的大型数据库。
可以运行于多个系统上,并且支持多种语言
3、如何查看自己的MySQL版本是5.7以上的版本?
方法一(需配置环境变量):在任务栏搜索“cmd”——找到命令提示符右击以管理员身份运行——输入“mysql -u账号 -p密码”——回车即可查看。
方法二:在任务栏搜索“mysql”——找到MySQL 5.7 Command Line Client——输入MySQL的密码即可查看。
二、账号管理
1、创建用户并设置登录密码
1.1:MySQL的用户显示方式
在MySQL里面用户的显示方式都是由用户名@由(localhost或%)来表示,这两个的意思指的是他们的登录方式:
localhost:本地登录,只能本机用户登录
%:远程登录,即用户用另外一台电脑登录来连接我这台电脑上的数据库
远程登录步骤:连接——MySQL——主句名或IP地址(注:默认localhost,若要远程登录该处需输入对方电脑的IP地址,但前提是对方电脑允许远程登录,若不允许即使输入了也连接不上去)
1.2:用户的创建位置
创建用户都是在MySQL自带的mysql数据库里面的user表创建,其中mysql数据库里面放的都是MySQL里面需要用到的东西,例user表:
在该表内我们可以看到User、authentication_string(加密过的密码)这个列段以及Host主机列段(该账号允许什么方式登录)等等后面一些授权的字段;
user表中Host列的值的意义
% :匹配所有主机,本地或远程都可进行登录
localhost:它不会被解析成IP地址,直接通过UNIXsocket连接,只能匹配本地主机,不允许IP进行登录
127.0.0.1:会通过TCP/IP协议连接,并且只能在本机访问
::1:就是兼容支持ipv6的,表示同ipv4的127.0.0.1
1.3:手动创建用户
这里以navicat界面工具为例,界面创建用户步骤:打开navicat——找到用户——新建用户即可
1.4:命令创建用户
语法命令:create user 用户名 identified by '密码';(注:identified by会将纯文本密码加密作为散列值存储)
create user sa identified by '123'
此时我们再到user表里面去看就会多一个sa用户,该用户默认是远程登录,但是该用户的权限默认都是没有的,这时候就需要我们来授权
1.5:授予(Grant)、撤销(Revoke)权限
所有数据的设置权限和撤销权限的语法规则都是一样的;
参数说明:
privileges||All:privileges表几乎包含所有权限,但all授予的权限更广;
databasename:数据库名
tablename:表名,如果要授予用户对所有数据库和表的操作权限直接使用:*.*;
on:表把什么数据库的哪个表的新增权限给哪个用户;
授予权限语法:grant privileges on databasename(数据库).tablename(表名) to username(用户名)@'localhost(本地权限)';
grant insert on g2101.t_student to sa@'localhost'
撤销权限语法:revoke privileges on databasename.tablename from username@'host';(该处没有具体讲述,具体参考授权)
无论是授予权限还是撤销权限都可在user表里面手动撤权,更简单方便;
1.6:查看用户
语法命令:select host,user,password from user(要查看的表名);
1.7:删除用户(慎用)
语法命令:drop user 用户名;
1.8:修改用户密码
语法命令:set password for 用户名=password('新密码');(注:修改密码在MySQL里面以上我给出的语法命令并不是唯一的写法,不同情况需用不同的命令修改)
若使用的是解压版的MySQL就可以实现绕过账号密码登录MySQL,我们可以找到mysql的安装路径,在mysql下点开mysql-5.7.23-winx64——打开my.ini配置文件——在配置文件最后面加一个“skip_grant_tables”保存,到命令提示符使用管理员身份运行操作即可,具体实现步骤如图所示:
但是这一操作也同样存在着危险的,因为我绕过密码登录拿到的权限是超级管理员权限,而超级管理员是可以修改我们的密码的,这里的修改密码方式和以上我们说到的修改密码方式不一样,它的修改密码的语法命令为:update user set password=password("你的新密码") where user="root";
通过以上简述我们可以知道有时候即使我们数据库设置好了账号密码也不安全, 但是如果我们使用的是安装版的MySQL便没有这个漏洞。
1.9:刷新配置
语法命令:flush privileges;
2.0:查看用户权限
语法命令:show grants for 用户名@'localhost';
show grants for root@'localhost';



