Mysql:如何在init_connect变量中正确设置过程调用

时间:2012-04-27 06:56:07

标签: mysql stored-procedures init

我想将每个会话用户的活动以非常高的级别存储到表中。 我写了一个程序“audit.login_trigger”。我已经创建了所需的模式(审计DB和表)。有点像这样。

CREATE PROCEDURE audit.login_trigger()
SQL SECURITY DEFINER
BEGIN
  INSERT INTO audit.audit_connect (thread_id, user, login_ts)
  VALUES (CONNECTION_ID(), USER(), NOW());
END;

我把它放在“init_connect”中。

SET GLOBAL init_connect="CALL audit.login_trigger()";

我希望每个用户连接都执行此操作。我将此PROCEDURE的EXECUTE权限授予root用户,但是当root用户登录时,它不会按预期填充审计模式。这里可能出了什么问题?

提前致谢。

1 个答案:

答案 0 :(得分:0)

由于此用户被命名为“root”,我想知道它是否具有超级权限。如果是,请注意init_connect不会为超级用户触发。