4

我需要为 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 对表的权限 - 这有效,但当然只适用于该表,其他表仍然出现错误。

有没有办法给用户触发模式的权限,而不分别给他每个表的权限?

4

2 回答 2

3

来自MySQL 文档

In MySQL 5.0 CREATE TRIGGER requires the SUPER privilege.

所以你需要给用户超级权限。导入时,会出现“创建触发器...”之类的命令,该命令会引发错误。

检查您的 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 = root。尝试删除定义器,然后尝试导入。希望它有效...

于 2012-08-02T12:54:40.690 回答
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.

设置全局变量并重新打开我能够插入触发器的会话

于 2016-11-04T11:44:15.267 回答