首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建MySQL触发器时出现权限错误

创建MySQL触发器时出现权限错误
EN

Stack Overflow用户
提问于 2020-07-12 23:08:57
回答 2查看 56关注 0票数 0

我想在dev环境中执行以下触发器。该触发器在本地运行良好(本地用户没有超级权限,并且启用了log bin )。这是触发器

代码语言:javascript
复制
DELIMITER $$
USE `myschema`$$
CREATE
DEFINER=`user`@`localhost`
TRIGGER `myschema`.`roles_BEFORE_INSERT`
BEFORE INSERT ON `myschema`.`roles`
FOR EACH ROW
BEGIN
IF (NEW.role_id IS NULL) THEN
    -- Find max existed role id
    SELECT
      MAX(role_id) INTO @max_role_id
    FROM
      roles;
 
    IF (@max_role_id IS NULL) THEN
      -- Set first role id
      SET NEW.role_id = CONCAT('RID', '0001');
    ELSE
      -- Set next role id
      SET NEW.role_id = CONCAT(SUBSTR(@max_role_id, 1, 3), LPAD(SUBSTR(@max_role_id, 4) + 1, 4, '0'));
    END IF;
  END IF;
END$$

我在dev环境中执行上面的脚本时遇到以下错误,我没有权限检查用户是否有什么权限,日志bin是否启用。您能告诉我有没有什么方法可以指定超级权限或设置日志bin使能查询以及上述脚本本身。我正在经历一段艰难的时间,因为这个问题在当地环境中是不能重现的。任何帮助都是非常感谢的。

代码语言:javascript
复制
SQL State  : HY000
Error Code : 1419
Message    : You do not have the SUPER privilege and binary logging is enabled 
(you might want to use the less safe log_bin_trust_function_creators variable)
EN

回答 2

Stack Overflow用户

发布于 2020-07-12 23:13:04

拥有超级权限的人必须将其授予您,或者自己创建触发器。它与Windows上的Administrator priv或*nix上的root priv是一样的。

票数 0
EN

Stack Overflow用户

发布于 2020-07-12 23:37:08

要检查当前用户授权:在mysql中以用户身份登录,然后

mysql> show授权;

要检查supper用户,请执行以下操作:

mysql>select用户,来自mysql.user的主机,其中super=‘y’;

要检查bonlog:

mysql>显示全局变量,如"log_bin";

Fix:您可以通过启用log_bin_trust_function_creators来修复它

mysql>设置全局log_bin_trust_function_creators =ON;

更多详情,请阅读官方文档。https://dev.mysql.com/doc/refman/5.7/en/replication-options-binary-log.html#sysvar_log_bin_trust_function_creators

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62862754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档