8.1 MySQL用户操作
MySQL用户简介:
MySQL用户与Linux的用户大差不差,大致分为三类
- 管理员用户:
也称ROOT,也就是我们安装时候默认的用户,该用户拥有最高权限
- 系统用户:
该用户为创建系统自带用户,主要用于进行系统运行,一般情况下无法登录
- 普通用户:
也称自定义用户,安装mysql以后自己创建的用户
那么问题来了,我们如何使用MySQL创建自定义用户呢?
MySQL创建自定义用户:
可以通过下列命令进行创建
GRANT all on 库名.表名 to "用户名"@"地址" identified by "密码"
我们可以说是创建用户,也可以说是授权用户,主要作用是通过该命令可以实现用户访问并且修改数据库。具体如下:
我们来举个例子:
例子一:
授权用户tom可以通过本地连接管理所有的库和表,密码为123456
grant all on *.* to"tom"@"127.0.0.1" identified by "123456"
显示ok,说明创建成功
创建成功,我们来看一下结果
(注意,查看mysql中的user表单即可查看本机用户名称,链接地址及所属权限)
可以看到在user表单中已经有tom字段了,说明创建成功,而后面全是y代表所属权限,说明我们已经可以使用tom去查看该数据库的所有库和表了!
做个链接测试
看连接
连接成功,说明可以登录。
(注意:127.0.0.1为本地连接端口,如果想进行其他本地连接也可以使用localhost语句进行连接)
例子二:
授权用户tom可以通过本地连接管理所有的库和表,密码为1234567
grant all on *.* to"tom"@"localhost" identified by "1234567"
看结果
ok了家人们,说明可以运行,我们来看user
尝试连接
尝试连接
ok了家人们,本地连接我们讲完了,接下来我们尝试从内网网段创建用户
例子三:
授权用户dog可以通过192.168.10.254查看和管理mysql库下的所有的表,密码为123456
grant all on mysql.* to "dog"@"192.168.10.254" identified by "123456"
执行看结果
ok了家人们,我们来看看mysql库中的user表
是有的,我们尝试连接
连接成功,我们看到只有两个表,一个为MySQL,还多带了一个库,这个是正常现象。我们现在来看库里的内容
可以看到完全没问题,也看不到其他的库,我们进去看一下user
也没什么问题,说明该表可以使用。下一个
例子四:
授权用户cat可以通过192.168.10.254只能查看和管理mysql库下user表,密码为123456
grant all on mysql.user to "cat"@"192.168.10.254" identified by "123456"
就不一个个查看了,直接进mysql
能进,这个完成
那么问题来了,我们能不能给用户增加些其他可以查看的数据?
例子五:
在上个例子的基础上,授权用户cat可以通过192.168.10.254只能查看和管理mysql库下user表及db表,密码为123456
grant all on mysql.db to "cat"@"192.168.10.254" identified by "123456"
我们看结果
可以看到我们可以查看的到db表,说明新增授权成功。
那我不妨有个大胆的想法,我们可不可以把一开始的tom一撸到底,只能查看MySQL库中的user表呢?当然是可以的,但是!不能通过grant去实现,因为它本身就拥有了最高权限,若想去撤销用户权限,则需要用到下一个命令
MySQL撤销用户权限
撤销用户权限格式
revoke all on 库名.表名 from "用户名"@"地址"
这里我们发现了,欸!撤销他不需要密码,命令就会显得相对简单一些,老规矩,一些细节我们后面边举例边讲述
例子1
撤销用户tom可以通过本地连接管理所有的库和表,
revoke all on *.* from "tom"@"127.0.0.1"
我们打开tom看一下
会发现tom的所有权限都丢掉了,我们进user看一下
会发现tom的名称和链接地址还在,但被一撸到底,只能登录不能进行其他操作。这就是撤销命令的作用,同样,我们撤销其他用户也是一样,只需要知道对方账户名称和ip地址即可进行撤销,但要注意的是,该命令只能通过root用户进行执行,因此请谨慎对待!!!
8.2数据库基本操作
简介
MySQL对于数据库的操作可以大体分为四类
- 增:添加新的行
- 删:删除表中的行 、 表 本 身 、 库
- 改:修 改
- 查:查 看 库 中 都 有 哪 些 表 、 表 中 的 数 据
而我们对于数据库的操作对象可以分为下列几类
- 库
- 表
- 数据
我们接下来一个一个捋,从库开始
对库的操作
- 查看库
- 新建库
- 删除库
那我们先来说一下查看库
查看库
查看所有库
格式
show detabases
我们直接演示
可以看到下面会出现一个表,分别记录着我们当前用户可操作的所有库,完工!
新建数据库:
格式
create database 库名 character set "字符集"collate "排序规则"
因为作者才疏学浅,没有能力拓展其他字符集及排序规则。一般情况下字符集用“utf-8”,排序规则使用“utf8_general_ci”,若有其他字符集及排序规则请移步其他博客进行学习。
我们直接来举例子
例子:
创建一个库“ku2”,字符集为utf8,排序规则为utf8_general_ci
create database ku2 character set "utf8"collate "utf8_general_ci"
创建好了我们通过show命令查看所有库
可以看到是由ku2的,命令执行成功,下一个
有关字符集的操作:
查看数据库所支持的字符集
我们已经可以创建数据库了,但在使用时难免会有需要用到其他字符集,这个时候我们就需要用到以下命令了
show charset
通过上述命令可以查看数据库所支持的字符集及排列顺序。结果如下图
这是查看数控库所支持的字符集,那么如何查看当前数据库的字符集呢?
查看当前数据库的字符集
show create database 库名
例子:
查看数据库db1的字符集
show create database db1
修改数据库
注意:修改数据库只能修改数据库的字符集,不能修改数据库名称
修改数据库的字符集
格式:
alter database 库名 character set "字符集" collate "排序规则"
例:
将db4修改为utf8,排序规则为"utf8_general_ci“
alter database db4 character set "utf8" collate "utf8_general_ci"
执行结果如下图
查看db4的字符集
ok,完成
删除数据库
格式
drop database 库名
我们直接上例子
例子:
删除库“ku2”
drop database ku2
通过show命令查看
删除”ku2“,命令执行成功,
总结:
对于库的操作大致可以分为以下几类:
- 查看:
show databases
- 新建:
create database 库名 character set 字符集 collate 排序规则
- 查看数据库所支持的字符集
show charset
- 查看当前数据库的字符集
show create database 库名
- 修改数据库字符集
alter database 库名 character set "字符集" collate "排序规则"
- 删除
drop database 库名
8.3表的操作
针对于表的操作,我们先来了解一个小知识:
记录和字段
- 记录:数据库文件中每一行都是一条记录
- 字段:数据库文件中每一列为一个字段(注:每个字段只能有一个数据类型!!)
接下来我们来看一下针对于表的操作,同样,表的操作也是四大类,分为增、删、查、改、四类,大部分情况下我们还需要执行一步额外的操作,选定库,我们先来从选定库进行讲解
选定库及查看表
选定库类似于在操作系统系统中选定目录一样,因为别的库也可能有其他的同名文件,因此我们需要先选定库才可以进行操作,具体操作如下
use 库名 ; #选定库 select database (); #查看当前数据库 show tables #查看选定数据库下都有哪些表
没看明白?举个例子我们实践一下可能就懂了
例子
查看hellodb中都有哪些表
use hellodb; select database (); show tables
看结果
我们现在就可以看到该数据库里面的全部表了,上面操作就相当于打开了文件夹,看到里面的东西了,这同样也是查看表的操作,
注意:必须先选定数据库才可以操作表格!!!!!
新建表
这里就要提到我们在本小节开头提到的东西了
- 表中的每一行为一条记录
- 表中每一列都是一个字段 (每个字段只能存储一种类型数据)
在这之前,我们还需要了解一些东西,
数据类型
- int: 整型:只能存储整数类型
- float: 浮点型:可以存储小数类型
- char: 字符类型:固定长度的字符,提前分配好存储空间,无论是否使用,存储空间大小不变
- varchar:字符类型:可变长度
- enum:枚举类型,可以理解为单选(给用户一个选择范围,用户仅仅可以选择一个)
在了解上述知识后,我们就可以去新建表了
新建表格式
create table 表名 ( 字段名1 字段数据类型(数据类型长度), 字段名2 字段数据类型(数据类型长度), 字段名3 字段数据类型(数据类型长度), 字段名4 字段数据类型(数据类型长度), )
看起来好像挺简单的样子,直接实操
例:
在db1中新建一个
表tb1
要求有三个字段,
字段1:id 类型是int
字段2:name 类型是char(30)
字段3:age 类型是int
use db1; create table tb1( id int, name char(30), age int)
我们来看结果
可以看到,表已经创建成功了,在创建成功后,我们就可以做下面操作了
查看表结构
这里先操作,完了做讲解
格式
use 库名; desc 表名
直接举例讲结果
查看db1中的tb1表的表结构
use db1; desc tb1
直接执行
可以看到,执行结果是将三个字段变成了三条记录,该表字段解释如下
- field:表示这个表中有几个字段,分别叫什么名字
- type:表示每个字段的数据类型
- null:下面的值有两中(yes|no)yes表示这个字段可以为空,no就是不可以
- key:表示哪个字段是主键
- default:默认值,如果没有些内容,表示没有设置默认值
- extra:表示每个字段的额外的属性有哪些
删除表
这里就不多做解释了,删除表
格式
drop table 表名
例
删除db1下的tb1表
use db1; drop table tb1
看结果
我们查询一下
确实没有表,说明命令执行成功,完成
总结
- 选定库及查看表格式
use 库名 ; select database (); show tables
- 新建表格式
create table 表名 ( 字段名1 字段数据类型(数据类型长度), 字段名2 字段数据类型(数据类型长度), 字段名3 字段数据类型(数据类型长度), 字段名4 字段数据类型(数据类型长度), )
- 查看表结构
use 库名; desc 表名
- 删除表
use 库名; drop table 表名
这里我不知道大家有没有发现一个比较有意思的东西,对于表的操作与对于库的操作如出一辙,只是后面有了些改动,本章的内容就到这里了,如果有错误还望各位大佬积极指出,感谢各位的观看0..0