从mysql触发器获取应用程序登录用户



是否有办法从MySQL触发器中识别应用程序登录用户?这里我做的是基于MySQL触发器的审计。我需要确定哪个用户正在对数据库执行CRUD操作。通过使用USER()可以获得数据库用户。但是这里我试图识别应用程序的登录用户。

我尝试了@user,但它是空的。

应用程序用户不是MySQL资源。任何应用程序都可以将它们作为数据存储在MySQL表中,但是MySQL无法使用它来知道哪个应用程序用户当前是经过身份验证的。应用程序如何使用该数据由您的应用程序自定义。

甚至可能有异常情况。例如,管理员拥有临时采用另一个用户身份的特权,这种情况并不少见。这也取决于你的应用程序,MySQL不可能知道这些,除非你告诉它。

您可以在应用程序用户身份验证后在数据库会话中实现set @user='...';的应用程序代码。如果您始终这样做,那么变量将在触发器中可用。

但这不是很安全。任何客户端都可以将该值设置为其他值。

否则,数据库会话就无法知道有关应用程序的任何信息。它只知道mysql用户。