我需要为mysql中的整个架构授予用户TRIGGER权限才能导入mysql工作台备份。
我尝试过:
grant trigger ON `schemaname`.* TO `user`@`localhost`
但是在导入时会出现用户没有权限的错误。
ERROR 1142 (42000) at line 53: TRIGGER command denied to user 'user'@'localhost' for table 'table'
我试图向用户提供TRIGGER权限 - 这有效,但当然只适用于该表,其他人仍然出现错误。
是否有任何方法可以为用户提供触发权限,而无需单独为每个表授予权限?
答案 0 :(得分:3)
In MySQL 5.0 CREATE TRIGGER requires the SUPER privilege.
因此您需要为用户提供SUPER权限。导入时,会出现像“创建触发器...”这样的命令,这会导致错误。
检查您的MySQL版本和定义器值以及导入文件中的触发器。
修改强> 对于版本5.1,请按照MySQL docs说明:
CREATE TRIGGER requires the TRIGGER privilege for the table associated with the
trigger. The statement might also require the SUPER privilege, depending on
the DEFINER value, as described later in this section. If binary logging is
enabled, CREATE TRIGGER might require the SUPER privilege, as described in
Section 19.7, “Binary Logging of Stored Programs”. (Before MySQL 5.1.6, there is
no TRIGGER privilege and this statement requires the SUPER privilege in all cases)
The DEFINER clause determines the security context to be used when checking access
privileges at trigger activation time.
因此,您需要检查Definer值以导入触发器。它可能包含:DEFINER = root
。尝试删除定义器然后尝试导入。希望它有效...
答案 1 :(得分:0)
在MySQL文档中:
To relax the preceding conditions on function creation (that you must have the
SUPER privilege and that a function must be declared deterministic or to not
modify data), set the global log_bin_trust_function_creators system variable
to 1. By default, this variable has a value of 0, but you can change it like
this:
mysql> SET GLOBAL log_bin_trust_function_creators = 1;
You can also set this variable by using the
--log-bin-trust-function-creators=1
option when starting the server.
设置全局变量并重新打开我能够插入触发器的会话