触发器
当某个行为发生的时候,会触发某个行为执行
事前触发就是,当你要进行一个操作的时候,系统撤销,并且代替一个操作,比如要你修改不让你修改,
当你购买东西,就需要库存里-1,订单表增加记录,也希望库存里-1
trigger 触发器
before在事件发生前,先执行触发器,相当于用触发器代替了增删改,after,是在执行操作之后
学生信息加一个,那么学生总量的表也需要加一个
echorow 针对每一行触发
触发的结果就是增加总量的笔啊
创建2个表,创建2个触发器
现在有两个触发器
触发器信息放在这个数据库里
增加记录应该触发了insert执行
增加两条记录也递增了
delete会触发count表更新
truncate就不会触发
删除触发器
用户管理
可以针对数据库,主机,用户,还有字段,某些字段是否有权限取操作,表的权限
usage只是链接数据库的权限,好多权限是没有的
就可以从8.6的机器上链接
只能看到一个数据库
权限不允许
这个账号是不能在其他主机上登录的
授权一个8.x网段的
现在就可以登录
可以删除用户
把空账号删除
专门修改口令,PASSWORD这个函数其实是给口令加密
也可以update直接修改,update无法立即生效
需要flush privileges 刷新特权
这是mysqladmin工具
mysqladmin shutdown可以关闭数据库,只能关闭没有启动
忘记root口令该怎么办
如果没有数据可以删除,重启动数据库
但是这种不适合生产环境
破解root口令skip grant table忽略授权表,就可以绕过数据库的登录验证
临时绕过但是还需要破解口令,直接update先清空
把刚才加的注销
重启数据库
能否创建临时表
能否创建用户
能不能创建管理文件
超级用户
能否查看数据库
能否数据库主从复制,锁表
管理进程
获得的权限转增给别人
可以只授权增删改,这样就不能drop
grant是授权,revoke是取消授权
对于某一个资源有完全的权限ALL PRIVILEGES 或ALL,on对某个对象进行授权(表,视图)
数据库级别
- 和*。*应该是一样的
- 授权某一个数据库db_name
可以具体到表tbl_name
routine_name 存储过程,函数
查询频率
多少个用户selectse
创建账号
只有授权的库才能看到
创建一个更小的权限的
针对特定的列
test数据库,谁都能访问
select只能看到三列,其他被拒绝了
只能看三列
取消权限
现在test用户权限很大可以删除
现在可以取消权限,不能执行delete,from针对哪个用户,少了点权限
重新登录生效下
通过连接管理模块,让用户可以连接到数据库进行操作
mysql是多线程,要管理线程就是线程管理模块,连接一个用户就要消耗一个线程,所以有一个线程池,通过线程池,当新用户发送请求的时候从线程池中抽取出一个线程来给用户提供服务
还有命令分发器,用户执行指令有一个分发器,不仅要执行指令,还要把一些结果缓存下来
、、
查询缓存模块,查询表里的内容,如果还想要访问,就可以缓存下来,提高速度,不用跑到慢速磁盘上找
、、
日志记录模块,对数据库的操作都有记录,尤其增删改,不记录就有可能造成破坏,比如事务日志,事务要实现ACID特性,才能对日志保持跟踪,保证数据的完整性,没日志怎么撤销
用户管理模块,创建用户
收到命令以后,还需要解析执行
要做优化,对表修改,表维护,去复制,状态模块,查看
还有访问控制权限模块 grant revoke 授权和取消权限
表管理模块,对表里的内容进行增删改
要进行修改的最后还是要体现在磁盘上的,就需要有存储引擎的接口,来负责最后保存到磁盘物理类存储设备来进行交互,不同的存储引擎在磁盘上保存的人家格式是不一样的
存储引擎才是决定如何写到磁盘上去
使用的线程是三个
其实有些线程处于空闲状态
mysql协议抓包下看看
三次握手
口令抓到了但是加密了
mysql协议帮你把口令加密,不是原来的口令
use数据库
试试查询的能否抓到
mysql一般跨内网使用,这是不加密的