应无所住,而生其心
排名
1
文章
860
粉丝
112
评论
163
net core webapi post传递参数
庸人 : 确实坑哈,我也是下班好了好几次,发现后台传递对象是可以的,但...
百度编辑器自定义模板
庸人 : 我建议换个编辑器,因为现在百度富文本已经停止维护了,用tinymec...
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

mysql触发器。mysql安全,mysql用户与权限管理。

5151人阅读 2021/9/16 17:20 总访问:5194803 评论:0 收藏:0 手机
分类: 数据库

MySQL触发器

什么是触发器:

触发器是个特殊的存储过程,不是由用户触发,是系统根据事件来触发。对表操作比如

添加,删除,修改。 也就是在进行DML操作的时候可以触发我们自己写的逻辑

触发器的作用:

数据同步(数据同步更新,同步修改), 做一些数据自定义约束…..,可以根据具体业务来实现

触发时间:

操作之前和操作之后,比如添加之前执行,添加之后执行,更新之前,更新之后……

操作之前: before 触发事件
操作之后: after 触发事件

触发器的NEW和OLD

new涉及到新数据的时候可以使用,比如添加与更新
old涉及到旧数据的时候可以用,比如删除的时候

简单例子:

添加一个insert之和的触发器。添加class表的时候向test表也添加内容。

  1. create TRIGGER tri_insert
  2. after insert on class
  3. for each row
  4. begin
  5. insert into test values(new.Id);
  6. end

加一个update之后的触发器

  1. -- 添加一个update之后的触发器。
  2. create trigger tri_update
  3. after update on class
  4. for each row
  5. begin
  6. insert into test values(old.Id);
  7. end

实际一点的使用,添加,更新,删除触发器

  1. -- 添加的触发器,向stu_daily_assignment表添加的时候同步像alltask_index表写入一条数据。a表的id写入的是alltask_index表中的CompleteTaskId
  2. create TRIGGER stu_daily_assignment_insert
  3. after insert on stu_daily_assignment
  4. for each row
  5. begin
  6. -- 取当前的日期时间
  7. declare nowdata datetime;
  8. SET nowdata = NOW();
  9. insert into alltask_index values(REPLACE(UUID(), '-', ''),'StuDailyAssignment',new.Id,new.DAStatus,new.ClassId,new.CreateTime,new.CreateTime,nowdata,nowdata,'添加触发器添加的');
  10. end
  11. -- 删除的触发器。向stu_daily_assignment表删除的时候同步删除alltask_index表对应的数据
  12. create TRIGGER stu_daily_assignment_delete
  13. after delete on stu_daily_assignment
  14. for each row
  15. begin
  16. -- 同步删除数据
  17. delete from alltask_index where CompleteTaskType = 'StuDailyAssignment' and CompleteTaskId = old.Id;
  18. end
  19. -- 更新的触发器,就同步更新DAStatus字段即可
  20. create TRIGGER stu_daily_assignment_update
  21. after update on stu_daily_assignment
  22. for each row
  23. begin
  24. -- 同步更新DAStatus字段
  25. update alltask_index set DAStatus = new.DAStatus where CompleteTaskType = 'StuDailyAssignment' and CompleteTaskId = old.Id;
  26. end
  27. select * from alltask_index where Remark = '添加触发器添加的' and ID = '20d3790250a511efbf9d0242ac150002'
  28. select * from stu_daily_assignment where id = '1819281825672073216'
  29. -- 测试更新的时候触发
  30. -- update stu_daily_assignment set DAStatus = 1 where id = '1819281825672073216'

MySQL用户管理

系统所有的用户,默认是在mysql数据库下的user表中的,查询用户如下:
select * from user

创建用户与删除用户
%表示所有ip地址可以访问,localhost表示只能本地访问

  1. -- 创建用户
  2. create user 'aj'@'%' identified by '123456'
  3. -- 删除用户
  4. drop user 'aj'@'localhost'

修改用户密码:
mysql_native_password可以省略

  1. alter user 'aj'@'%' identified with mysql_native_password by '123'

MySQL权限管理

查询用户的权限:

  1. Show grants for ‘用户名’@’主机名’

授权:

  1. Grant 权限 on 数据库.表 to ‘用户名’@’主机名’

撤销权限:

  1. revoke 权限 on 数据库.表 from ‘用户名’@’主机名’

实例:

  1. -- 查询权限
  2. show grants for 'aj'@'%'
  3. -- 授予权限
  4. grant all on oa1212.* to 'aj'@'%'
  5. --撤销权限
  6. revoke all on oa1212.* from 'aj'@'%'

欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)

评价

mysql主从复制+读写分离

使用Mysql读写分离和主从复制的原因:*单台MySQL服务器的安全性,高可用性,高并发都是不满足实际的生产需要。介绍:1.MySQ...

mysql控制台插入中文数据报错1366解决

计算机配置: windows系统.数据库:MySQL5.5.如图 : 下图为表结构信息:通过 show full columns from userinfo;查询所得 na...

mysql 游标创建

游标:可以来存储一个结果集,可以通过遍历来访问到每一个数据需求:分表数据。 把一张表的数据根据需求分离,创建不同的表...

mysql 存储过程报错:delimiter

最近刚学sql,学到了存储过程,每当练习的时候就一直出现问题。 现在记录CREATEPROCEDUREproc_out(OUTstuidINT) begin se...

mysql 视图的(增删改 查)

要显示视图的定义,需要在SHOWCREATEVIEW子句之后指定视图的名称, 我们先来创建几张表,完事后在进行演示:--用户信息表...

mysql概述与安装配置

1996年首次发行,对于初学者来说,MySQL很容易上手MySQL数据库MySQL 是开源的,所以你不需要支付额外的费用。MySQL 支持大...

mysql存储引擎和数据类型

一 了解MySQL存储引擎什么是MySQL存储引擎?MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技...

本地mysql重置密码

原理:通过跳过表授权,跳过密码直接在表里更新密码1. 找到my.ini一般在C:\Program Files\MySQL\MySQL Server 5.7\bin12345...

mysql数据库基础

1 数据库和表操作 2 数据操作 3 高级查询 4 mysql管理1 数据库和表操作 数据库 创建:create database 数据库名 [default ...

mysql基础

1.创建、修改和删除 表是数据库存储数据的基本单位、一个表包含若干个字段或记录、表的操作包括创建新表、修改表和删除表。...

EF连接mysql连接mysql数据库操作中文数据乱码解决方法

修改数据库的连接字符器在连接字符器添加charset=gb2312。注意事项:(1)字符编码不支持UTF8。(2)必须使用规定编码。示例:&...

EF连接mysql数据库

注意事项准备工作(1)下载MySQL数据库软件6.6.6版本。 (2)下载MySQL数据库mysql-connector-net-6.6.6两者不一样都不能少。(...

VS2017安装mysql加载驱动

部署安装环境运行MySQL和VS2017软件下载MySQL-for-visualstudio-msiMySQL-connector-net-6.6.6-msi安装版本6.10.5和6.9.9在...

shell脚本强制修改mysql --root密码

话不多说直接拿去撸;PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/binexport PATHread -p &quot...

Navicat 连接mysql时报错代码1405

好久不见我们又见面了今天给大家分享的是Navicat连接mysql时报1405的错 话不多说直接上图片遇到这个错时第一种情况:看一...

mysql未能加载文件或程序集“Ubiety.Dns.Core”或它的某一个依赖项 问题的解决

在VS2019中使用Nuget的方式添加了最新的MySQL包 MySql.Data 8.0.19 ,默认添加了个Ubiety.Dns.Core,不知道有什么用,但是...