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

Get application logged in user from mysql triggers

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

我尝试使用 @user 但它被赋予空值。

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

您甚至可能遇到例外情况。例如,管理员拥有临时采用另一个用户身份的特权的情况并不少见。这也取决于您的应用程序,除非您告诉它,否则 MySQL 无法知道这一点。

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

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

否则数据库会话无法了解您的应用程序的任何信息。它只知道 mysql 用户。