SQL创建函数不成功的问题-log_bin_trust_function_creators参数研究
2015-12-10 15:18
417 查看
[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脚本中存在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;(该设置在重启时会自动消失,除非写入配置文件)
主从复制中不会直接复制参数设置,因此三台均要做此设置,但是这个设置也是有安全风险的。
相关文章推荐
- 数据库高可用架构(MySQL、Oracle、MongoDB、Redis)
- mysql 必知必会(1)
- oracle 判断是否数字 正则表达式法
- SQLServer数据库日期类型转换
- Mysql 锁机制整理
- Mongodb查询指定字段方法
- oracle数据库配置远程连接数据库,配置文件路径
- SQL Server 删除当前数据库中所有数据库 ,无视约束
- sql查询库中所有表中的数据总数
- SQLServer单用户模式导致服务器连接失败
- gitlab 服务器搭建指南
- ibatis单元测试出现The error occurred while loading SqlMap -initialize type alias解决办法
- express实现前后端通信上传图片,存储数据库(mysql)傻瓜教程(三)完结篇
- Windows MongoDB:搭建三节点 Replica Set 环境
- C#创建数据库及导入sql脚本的方法
- mysql主服务器 binlog_format 的 statement,row, mixed 三种格式对比。
- MySQL安装失败后操作
- 乐观锁和悲观锁
- mysql information_schema库
- MySQL查看数据库、表的占用空间大小