MySQL8中创建函数报错的解决

在MySQL8.x中遇到创建函数时由于安全性增强导致的1418错误,可以尝试设置全局环境变量log_bin_trust_function_creators为TRUE或修改my.cnf配置文件添加相应设置。这种方法允许不安全的函数创建,但需谨慎操作,因为可能影响二进制日志的安全性。

一 问题描述

在使用MySQL8.x版本的数据库创建函数时, 报出一下错误

HY000][1418] This function has none of DETERMINISTIC, 
NO SQL, or READS SQL DATA in its declaration and binary logging is enabled 
you might want to use the less safe log_bin_trust_function_creators variable

简单翻译一下 , 函数定义不明确 , 没有SQl语句 , 或者只是读取数据不会执行 , 并且已经启用了二进制文件记录, 你可能需要使用不太安全的 log_bin_trust_function_creators 变量;

说人话 : MySQL5.x 中 可以直接创建函数 , 在MySQL8.x 中, 不能直接创建函数 , 需要首先设置 log_bin_trust_function_creators=true , 才可以;

二 解决方案

方案一 : 设置全局环境变量

特点 : 不需要重启服务器, 在服务器的一次运行中始终有效 , 重启MySQL服务之后会失效!

show variables like '%log_bin_trust_function_creators%'; # 查看默认值
set GLOBAL log_bin_trust_function_creators=TRUE; # 修改默认值为true

方案二 : 修改系统配置文件

特点 : 需要重启服务器, 终身有效 !
找到my.cnf配置文件中添加:

log_bin_trust_function_creators=1

修改完成以后, 记得重启一下服务哦 ! 如果不想重启服务 , 也可以将方案一二结合使用 , 即修改全局环境变量 , 又修改系统配置文件 !

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

真香IT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值