当前位置: 首页 > news >正文

【Mysql】修改definer

修改definer

本文介绍如何修改MySQL中的function、procedure、event、view和trigger的definer

修改function、procedure的definer

首先,我们需要登录MySQL命令行界面,然后执行以下命令:

select definer from mysql.proc;

这个命令会列出所有的function和procedure,同时显示它们的definer。如果要修改definer,可以执行以下命令:

update mysql.proc set definer='user@localhost';

其中,user@localhost可以是任何合法的用户名和主机名,表示只有这个用户才能访问数据库。

修改event的definer

如果要修改event的definer,可以执行以下命令:

select DEFINER from mysql.EVENT;

这个命令会列出所有的event,并显示它们的definer。如果要修改definer,可以执行以下命令:

update mysql.EVENT set definer='user@localhost';

修改view的definer

如果要修改view的definer,可以使用以下命令:

select DEFINER from information_schema.VIEWS;

如果只是想查询指定的数据库的,需要加一个条件

select DEFINER from information_schema.VIEWS table_schema = 'test_rex';

这个命令会列出所有的view,并显示它们的definer。如果要修改definer,可以执行以下命令:

select concat("alter DEFINER=`user`@`localhost` SQL SECURITY DEFINER VIEW ", TABLE_SCHEMA, ".", TABLE_NAME, " as ", VIEW_DEFINITION, ";") from information_schema.VIEWS where DEFINER = 'user@localhost';

这个命令会查询出需要修改的VIEW,并生成修改语句,如下所示:

alter DEFINER=`user`@`localhost` SQL SECURITY DEFINER VIEW mydb.myview as select * from mytable;

执行这条修改语句即可完成修改。
这里有一个细节,需要注意下,就是我第一次写成了如下,结果mysql会自动再拼接上@%,导致结果是吧definer改成了 user@localhost@%

alter DEFINER='user@localhost' SQL SECURITY DEFINER VIEW mydb.myview as select * from mytable;

修改trigger的definer

目前还没有找到具体方便的方法来修改trigger的definer。可以借助工具端如HeidiSQL、sqlyog等来一个个修改。需要注意的是,在修改trigger的definer之前,需要先锁表,以避免在修改过程中出现数据不一致的情况。

总结

本文介绍了如何修改MySQL中的function、procedure、event、view和trigger的definer。通过修改definer,您可以更好地控制数据库的访问权限,保证数据库的安全性。需要注意的是,在修改definer之前,需要先备份数据,以防修改出现错误。同时,在执行修改操作时,也需要谨慎操作,以免造成不可逆的损失。

http://www.lryc.cn/news/123197.html

相关文章:

  • 图片预览插件vue-photo-preview的使用
  • 最强自动化测试框架Playwright(20)- iframe
  • leetcode 516. 最长回文子序列(JAVA)题解
  • 在Java中操作Redis(详细-->从环境配置到代码实现)
  • 分布式作业调度框架——ElasticJob
  • react如何实现数据渲染
  • 在Java中如何使用List集合实现分页,以及模糊查询后分页
  • 【JAVA】包装类、正则表达式、Arrays类、Lambda表达式
  • Java中的Maven Assembly插件是什么?
  • SpringBoot禁用Swagger3
  • 小红书Java后端2023-8-6笔试
  • metaRTC7 demo mac/ios编译指南
  • systemd-journal 占用内存的问题
  • Java # Spring(2)
  • 2021年03月 C/C++(二级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • 应用程序运行报错:First section must be [net] or [network]:No such file or directory
  • 【ECMAScript】ES6-ES11学习笔记
  • K8S MetalLB LoadBalancer
  • kubernetes二进制部署2之 CNI 网络组件部署
  • docker通用镜像方法,程序更新时不用重新构建镜像
  • Spring Cloud构建微服务断路器介绍
  • [国产MCU]-BL602开发实例-OLED-SSD1306驱动与U8g2移植
  • AWS asg(Auto Scaling Group)部署时报错Error: Termination Reason: Client.InternalError
  • Redis—过期删除策略和内存淘汰策略
  • 连续两年增收不增利,比亚迪电子靠新能源汽车业务再次起飞?
  • echarts3d柱状图
  • 使用webpack插件webpack-dev-server 出现Cannot GET/的解决办法
  • 老网工必备好物,分享15个网络监控神器
  • 拒绝摆烂!C语言练习打卡第一天
  • Spring 使用注解开发、代理模式、AOP