草庐IT

mysql - 在表上执行 CREATE TRIGGER 时如何删除默认的 DEFINER?

我正在推出一些软件的更新,其中包括运行SQL脚本来创建触发器。在我的.sql文件语法中,我没有包含任何DEFINER子句,因为我希望我客户的生产MySQL用户(他们自己设置)能够在程序正在运行。事实是,测试表明MySQL会自动为TRIGGER创建一个DEFINER,带有'CURRENT_USER'@'%'。当你做明智的事情,并使用一个(受限)帐户进行日常数据操作,另一个帐户进行大更新(root?)时,你最终会尝试与一个或多个没有权限的用户一起执行TRIGGER去做。有没有办法删除这个“自动添加定义器”功能?我尝试输入DEFINER='%'@'%'但这不被接受。

没有 "CREATE ALGORITHM"和 "DEFINER"的 mysqldump

在我的数据库备份和导出中,我得到如下内容:/*!50001DROPTABLE`vTime`*/;/*!50001DROPVIEWIFEXISTS`vTime`*/;/*!50001CREATEALGORITHM=UNDEFINED*//*!50013DEFINER=`db_user`@`%`SQLSECURITYDEFINER*//*!50001VIEW`vTime`ASselect...*/;这会导致恢复时出现问题,因为“CREATEALGORITHM”和“DEFINER”部分在尝试恢复时会失败。有没有办法让mysqldump只做一个简单的CREATEVIEW?附加问题:/*!500

mysql错误:The user specified as a definer ('mysql.infoschema' @'localhost' ) does not exist' when trying to dump tablespaces

在我将MySQL5.7升级到MySQL8.0后,我再次启动MySQL并出现错误:尝试转储表空间时,指定为定义器的用户('mysql.infoschema'@'localhost')不存在'。我不明白为什么会出现这个问题。我想知道如何解决它 最佳答案 当我不小心将MySQL版本从8降级到5.7时,我遇到了同样的错误。在第一次启动时,旧版本破坏了某些东西,因此版本8显示了上述错误。就我而言,我必须进入首先运行MySQL的docker容器dockerexec-itmysqlbash然后我基本上按照步骤heremysql-uroot-pmy

mysql - 从 MySQL 转储中删除 DEFINER 子句

我有我的一个数据库的MySQL转储。其中,有DEFINER子句,看起来像,"DEFINER=`root`@`localhost`"也就是说,这些DEFINER子句位于我的CREATEVIEW和CREATEPROCEDURE语句中。有没有办法从我的转储文件中删除这些DEFINER子句? 最佳答案 我认为没有办法忽略将DEFINER添加到转储中。但是有一些方法可以在创建转储文件后删除它们。在文本编辑器中打开转储文件并将所有出现的DEFINER=root@localhost替换为空字符串“”Editthedump(orpipetheout
12