我想在dev环境中执行以下触发器。该触发器在本地运行良好(本地用户没有超级权限,并且启用了log bin )。这是触发器
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使能查询以及上述脚本本身。我正在经历一段艰难的时间,因为这个问题在当地环境中是不能重现的。任何帮助都是非常感谢的。
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)发布于 2020-07-12 23:13:04
拥有超级权限的人必须将其授予您,或者自己创建触发器。它与Windows上的Administrator priv或*nix上的root priv是一样的。
发布于 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
https://stackoverflow.com/questions/62862754
复制相似问题