Mysql 8.0:如何更改过程定义器
Posted
技术标签:
【中文标题】Mysql 8.0:如何更改过程定义器【英文标题】:Mysql 8.0: How to Alter Procedure Definer 【发布时间】:2019-11-26 10:20:06 【问题描述】:我们很容易将例程/SP 定义器更新到 5.7,但在 8.0 中我们无法找到确切的命令。我在下面运行但不工作。另请注意,我们无法生成脚本并手动更新它然后重新执行脚本。我们有大约 3500 个实时服务提供商,我们无法承受任何停机时间。有什么解决办法吗?
ALTER PROCEDURE sng.sp_get_profile_search_2_test SQL SECURITY
DEFINER=`root`@`localhost`
或
ALTER PROCEDURE sng.sp_get_profile_search_2_test SQL SECURITY
DEFINER='root'@'localhost'
【问题讨论】:
定义者名称不能改,只能将SQL SECURITY
改成DEFINER or INVOKER
,mysql-docs
【参考方案1】:
示例:
UPDATE `mysql`.`procedure` pro SET definer = 'user@%' WHERE definer='root@%'
【讨论】:
记住:它是 8.0 版本错误代码:1146 表 'mysql.procedure' 不存在 更新 sng.sp_get_profile_search_2_test SET DEFINER = 'dbname@localhost';【参考方案2】:试试这个:
UPDATE sng.sp_get_profile_search_2_test SET DEFINER = 'dbname@localhost';
【讨论】:
错误代码:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以了解在附近使用的正确语法以上是关于Mysql 8.0:如何更改过程定义器的主要内容,如果未能解决你的问题,请参考以下文章
mysql-8.0 安装教程(自定义配置文件,密码方式已修改)
如何将入口点过程从“WinMain”更改为“main”或任何自定义函数?