mysql数据库log_bin_trust_function_creators参数

AWS RDS/MySQL无法使用trigger问题解决 如果在自行安装的MySQL上无法使用trigger,可以使用一下方法: 解决方法: 第一步,用root用户登录:mysql -u root -p 第二步,设置参数log_bin_trust_function_creators为1:set global log_bin_trust_function_creators = 1; 在AWS上面的无法使用会得到一下报错: mysql> create trigger ins_sum before insert on account for each row s 阅读详情

以下均是在Centos 7.4-1(ip:192.168.128.138)下进行

MySQL的有个参数log_bin_trust_function_creators,当二进制日志启用后,这个变量就会启用。它控制是否可以信任存储函数创建者,不会创建写入二进制日志引起不安全事件的存储函数。如果设置为0(默认值,为off),用户不得创建或修改存储函数,除非它们具有除CREATE ROUTINE或ALTER ROUTINE特权之外的SUPER权限。 设置为0还强制使用DETERMINISTIC特性或READS SQL DATA或NO SQL特性声明函数的限制。 如果变量设置为1,MySQL不会对创建存储函数实施这些限制。 此变量也适用于触发器的创建。
当开启二进制日志后,如果变量log_bin_trust_function_creators为OFF,那么创建或修改存储函数就会报“ERROR 1418 (HY000): 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)”这样的错误:

mysql> show variables like 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin       | ON    |
+---------------+-------+
1 row in set (0.00 sec)
 
mysql>  show variables like '%log_bin_trust_function_creators%';
+---------------------------------+-------+
| Variable_name                   | Value |
+---------------------------------+-------+
| log_bin_trust_function_creators | OFF   |
+---------------------------------+-------+
1 row in set (0.00 sec)
 
mysql> 
mysql> DELIMITER //
mysql> CREATE FUNCTION GET_UPPER_NAME(emp_id INT)
    -> RETURNS VARCHAR(12)
    -> BEGIN
    ->   RETURN(SELECT UPPER(NAME) FROM TEST WHERE ID=emp_id);
    -> END
    -> //
ERROR 1418 (HY000): 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)
mysql> 

那么为什么MySQL有这样的限制呢? 因为二进制日志的一个重要功能是用于主从复制,而存储函数有可能导致主从的数据不一致。所以当开启二进制日志后,参数log_bin_trust_function_creators就会生效,限制存储函数的创建、修改、调用。
此时,我们有两种方法解决:
方法1:
1.1临时方法:

set global log_bin_trust_function_creators=1;
show VARIABLES like '%log_bin_trust_function_creators%';

1.2永久方法
vim /mysqldb/3308/etc/my.cnf的[mysqld]中加入:

log_bin_trust_function_creators=1;

然后重启mysql:/mysqldb/3308/mysqld restart

方法2:
明确指明函数的类型,如果我们开启了二进制日志, 那么我们就必须为我们的function指定一个参数。其中下面几种参数类型里面,只有 DETERMINISTIC, NO SQL 和 READS SQL DATA 被支持。这样一来相当于明确的告知MySQL服务器这个函数不会修改数据。
1 DETERMINISTIC 确定的
2 NO SQL 没有SQl语句,当然也不会修改数据
3 READS SQL DATA 只是读取数据,当然也不会修改数据
4 MODIFIES SQL DATA 要修改数据
5 CONTAINS SQL 包含了SQL语句

mysql> show variables like 'log_bin_trust_function_creators';
+---------------------------------+-------+
| Variable_name                   | Value |
+---------------------------------+-------+
| log_bin_trust_function_creators | OFF   |
+---------------------------------+-------+
1 row in set (0.00 sec)
 
mysql> DROP FUNCTION GET_UPPER_NAME;
Query OK, 0 rows affected (0.00 sec)
 
mysql> DELIMITER //
mysql> CREATE FUNCTION GET_UPPER_NAME(emp_id INT)
    -> RETURNS VARCHAR(12)
    -> READS SQL DATA
    -> BEGIN
    ->   RETURN(SELECT UPPER(NAME) FROM TEST WHERE ID=emp_id);
    -> END
    -> //
Query OK, 0 rows affected (0.01 sec)
 
mysql> DELIMITER ;
mysql> SELECT ID,
    ->        GET_UPPER_NAME(ID)
    -> FROM TEST;
+------+--------------------+
| ID   | GET_UPPER_NAME(ID) |
+------+--------------------+
|  100 | KERRY              |
|  101 | JIMMY              |
+------+--------------------+
2 rows in set (0.00 sec)
解决MySQL中log_bin_trust_function_creators错误 在MySQL中,log_bin_trust_function_creators是一个系统变量,用于控制是否信任二进制日志中的创建函数。然而,有时候在进行数据库操作时,可能会遇到log_bin_trust_function_creators错误,这意味着MySQL服务器拒绝了创建函数的请求。通过修改MySQL配置文件中的log_bin_trust_function_creators变量的值,并重新启动MySQL服务,我们可以解决log_bin_trust_function_creators错误。 阅读详情

相关推荐

FMC/FSMC/EXMC总线NORFlash/PSRAM接口(异步-复用-不突发/同步-复用-突发)

目录 1 简介 1.1 框图 1.2 接口定义 1.3 读写时序图、时序配置参数 1.4 PSRAM控制器异步工作模式分类 1.5 PSRAM寄存器配置 1.5.1 控制寄存器BCR 1.5.2 片选时序寄存器BTR 1.5.3 写入时序寄存器BWTR 2 FPGA接口设计 2.1 实际配置的时序 2.2 接口信号处理 3 参考文献 1 简介 使...

leixj的博客 2万+

深入理解MySQL中的log_bin_trust_function_creators系统变量

log_bin_trust_function_creators是MySQL中一个对存储函数创建权限控制和复制行为具有深远影响的系统变量

jkzyx123的博客 5766

物联网开发131 - Micropython ESP32 C3连接TB6600驱动42BYGH39步进电机

如何使用合宙ESP32 C3连接TB6600驱动42BYGH39步进电机,实现控制步进电机正反转和旋转指定角度等

zhusongziye的博客 2370

关于log_bin_trust_function_creators导致的函数不能执行的解决(问题记录)

log_bin_trust_function_creators这个是MySQL的一个内置变量,从字面来说就是在binlog开启的状态下,系统需要信任生成函数,毕竟函数可以做得事情太多啦,系统默认在binlog开启的时候是关闭生成函数的使用的,万一,某天需要通过binlog日志回滚,而所有事务里就带有某些损害系统的函数,后果可能是灾难性的,因此,有这么一个变量。 好了,废话不多说,有临时设置log_bin_trust_function_creators和永久设置log_bin_trust_function.

zsk_john的技术分享专用博客 1万+

从FinFET到NanoSheet:一文看懂TSMC制程技术的架构革命与性能飞跃

本文深入解析了TSMC从FinFET到NanoSheet的制程技术架构革命。FinFET通过三维立体结构解决了短沟道效应,而NanoSheet采用环绕栅极设计,实现了更强的静电控制与设计灵活性,结合EUV光刻技术,共同推动了芯片性能与能效的飞跃,为下一代AI与高性能计算奠定基石。

i3j4k5的博客 288

认知网络分析实战:用Python复现课堂对话研究(含LSA代码)

本文通过Python实战,详细演示了如何运用认知网络分析(ENA)和滞后序列分析(LSA)两种方法,对课堂对话数据进行深度挖掘。文章提供了从数据清洗、行为编码到网络构建、序列统计及可视化的完整代码流程,帮助教育研究者和数据分析师量化分析对话中的认知结构与动态互动模式,从而获得超越文本表面的研究洞见。

weixin_28559803的博客 155

MySQL参数log_bin_trust_function_creators介绍

这是我们开启了bin-log, 我们就必须指定我们的函数是否是 1 DETERMINISTIC 不确定的 2 NO SQL 没有SQl语句,当然也不会修改数据 3 READS SQL DATA 只是读取数据,当然也不会修改数据 4 MODIFIES SQL DATA 要修改数据 5 CONTAINS SQL 包含了SQL语句 其中在function里面,只有 DETERMINISTIC, NO S...

Tybyqi的博客 1万+

在claude code desktop中安装pdf处理skill的实战教程

本文介绍了在Claude Code Desktop中安装PDF处理Skill的详细教程。针对国内用户使用第三方API时无法直接调用官方插件的问题,提供了完整的解决方案。教程从下载Anthropic官方Skills源码开始,逐步演示了如何将PDF处理模块打包、上传至Claude Code Desktop,并最终成功加载使用。整个过程采用全流程拆解方式,确保新手也能快速上手。通过本文,读者可以掌握在非官方环境下扩展Claude Code功能的方法,从而提升工作效率

weixin_43178406的博客 9万+

mysql 查询 log_bin_trust_function_creators

我整理的一些关于【MySQL】的项目学习资料(附讲解~~)和大家一起分享、学习一下:https://d.51cto.com/yOSbkR如何查询 MySQL 中的 log_bin_trust_function_creators 在使用 MySQL 数据库时,有时需要确认数据库的配置参数,以确保其功能能正常运行。其中,lo...

weixin_28973031的博客 426

PCL 均匀采样【2026最新版】

根据输入点云数据创建一个微小的三维立方体集合,然后计算每个三维立方体的重心;由于该重心点不一定是原始点云中的点,直接用该点来表示立方体内所有的点会丢失原始点云的细小特征;所以使用k最近邻搜索寻找距离重心点最近的原始点来代替重心点。

点云侠的博客 41万+

[ vulhub漏洞复现篇 ] Django SQL注入漏洞复现 CVE-2021-35042

[ vulhub漏洞复现篇 ] Django SQL注入漏洞复现 CVE-2021-35042 Django 组件存在 SQL 注入漏洞,该漏洞是由于对 QuerySet.order_by()中用户提供数据的过滤不足,攻击者可利用该漏洞在未授权的情况下,构造恶意数据执行 SQL 注入攻击,最终造成服务器敏感信息泄露。

qq_51577576的博客 3228

MySQL报 you *might* want to use the less safe log_bin_trust_function_creators variable错误解决方法

解决方法:执行SET GLOBAL log_bin_trust_function_creators = 1; 具体说明如下: 在打开日志文件情况下执行以前建立的 自定义函数报错详细分析如下: 1 .调用自定义函数 mysql> select sp_function_dbdh_three(); #以前自定义的函数 2. 报错信息: ER...

一火的专栏 1万+

利用dddd_trainer训练通用验证码识别模型

博文介绍了使用dddd_trainer工具训练自定义验证码识别模型的过程,详细展示了从环境搭建、数据集准备到模型训练的全流程。

九月镇灵将的博客 1033

MySQL函数不能创建的解决方法

MySQL函数不能创建的解决方法 MySQL函数不能创建,是一个很麻烦的问题,下面就为您提供了一个解决此问题的方法,如果您也遇到过类似的问题,不妨一看。 http://database.51cto.com/art/201010/229918.htm 在使用MySQL数据库时,有时会遇到MySQL函数不能创建的情况。下面就教您一个解决MySQL函数不能创建问题的方法,供您借鉴参考。 出错信息...

s_x123456的博客 5137

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

[ERROR] mysql 创建函数 1418错误 解决方案

分析: 根据系统提示,导致该错误的原因可能是一个安全设置方面的配置,查手册log_bin_trust_function_creators参数缺省0,是不允许function的同步的. 处理过程: 1.登陆mysql数据库> set global log_bin_trust_function_creators = 1; 单数据库可以忽视下面操作> start slave; ...

SupperWhite的博客 637

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary log

mysql 复制数据库到其他主机时,报: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_creat

Angelaaa_的博客 646

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Amazon RDS MySQL数据库还原时 log_bin_trust_function_creators 错误解决办法

使用了Amazon AWS EC2免费云空间,数据库实例采用Amazon RDS。原来在Windows Server上有一个存在大量数据的MySQL数据库。现在需要在Amazon RDS上还原这个MySQL数据库,勾掉Views(因为它会要求SUPER权限,而Master User无此权限,毕竟是托管的RDS),只留下Tables,如下图(使用Navicat): 图1:勾掉Views,因为R...

weixin_30646505的博客 344

MySQL_MySQL查询截取分析之批量插入数据脚本

1.引入: 我们在之前的MySQL基础中说过MySQL数据库的函数和存储过程。那么其实俩个都是使用数据库编程语言写的脚本语言。主要是为了解决批量数据的插入。其中,函数有返回值。存储过程没有返回值。 2.数据测试准备 (1).准备创建数据库表SQL DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(255) NOT NUL..

u013185175的博客 359

mysql_报错1418

报错如下: 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_cr...

aiacl7583的博客 124

MySQL批量数据脚本示例

一、建表 # 新建库 create database bigData; use bigData; #1 建表dept CREATE TABLE dept( id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT, deptno MEDIUMINT UNSIGNED NOT NULL DEFAULT 0, dname ...

weixin_34126215的博客 160

重新装mysql出现乱码_mysql重装后出现乱码解决办法

查看当前连接系统参数:SHOW VARIABLES LIKE '%char%';mysql>show variables like 'char%';+--------------------------+----------------| Variable_name | Value+--------------------------+----------------|...

weixin_39855944的博客 112

mysql 1305 报错_mysqldump 报错 ERROR 1305 (42000) FUNCTION

用mysqldump 备份数据库,然后恢复的时候报错如下:ERROR1305(42000)atline9089:FUNCTION538329e1768cd.Fn_ParentsList_Selectdoesnotexist经过查找,发现是mysqldump 不加任何参数的情况下是不会导出存储过程与函数,如果需要导出函数与存储过程需要加一个 -R这样导出的sql 文件里面才包括存...

weixin_34493096的博客 3947

mysql报错:You do not have the SUPER privilege and binary logging is enabled

解决方法 1、用root用户登录:mysql -u root -p 2、设置参数log_bin_trust_function_creators为1 set global log_bin_trust_function_creators = 1; 结果:

baidu_41553551的博客 6637

linux mysql修改用户权限_MySQL数据库下用户及用户权限配置

问题:使用某大神写的远程工具管理MySQL数据库时发现所有数据能正常显示,但是无法进行删除、修改等操作。思路:可以远程读取到数据库里的信息,说明当前主机可以远程连接数据库。却无法进行删除、修改这些操作,说明某些权限并未赋予当前远程用户。解决方法:查看当前用户权限显示当前用户下的权限为:select,insert,update,delete这样看来,应该是具备删除、修改这些权限的,可是在远程工具上却...

weixin_42221297的博客 457

MySQL高级——批量插入数据脚本

目录一、建表语句二、设置开启创建函数功能的log_bin_trust_function_creators参数三、往表里插入1W条数据进行示例演示3.1、创建往表里插入的每条数据都不同的函数3.2、创建往表里插入数据的存储过程3.3、调用存储过程 一、建表语句 CREATE TABLE `dept` ( `id` INT(8) NOT NULL AUTO_INCREMENT, `deptno` INT(11) DEFAULT '0' COMMENT '部门编号', `dname` VARCHAR(

小志的博客 1366
上一篇: Nginx入门基础和实战演练
下一篇: mysql数据库sql性能分析工具show profiles简介
gushaolin
博客等级 码龄7年 16粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值