SQL创建函数不成功的问题-log_bin_trust_function_creators参数研究

[Err] 1227 - Access denied; you need (at least one of) the SUPER privilege(s) for this operation

这个问题是由于导入的sql脚本中存在DEFINER=`root`@`%` 、DEFINER=`sspdbexecuter`@`localhost`,由于没有相应的权限,所以导入报错

解决方法:
1)去掉sql脚本中的DEFINER=`root`@`%` 、DEFINER=`sspdbexecuter`@`localhost` (如果不去掉,即使给了grant all ...sspdbexecuter@'localhost'也一样报错)
2)去掉上面的内容后,便引发第2个问题“ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL,or READS SQL DATA in its declaration”


 解决方法有两种,一种是在create语句中指定deterministic参数,一种是在mysql中设置 log_bin_trust_function_creators = 1;,目前暂时设置的SET GLOBAL log_bin_trust_function_creators = 1;(该设置在重启时会自动消失,除非写入配置文件)


主从复制中不会直接复制参数设置,因此三台均要做此设置,但是这个设置也是有安全风险的。

你可能感兴趣的:(SQL创建函数不成功的问题-log_bin_trust_function_creators参数研究)