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

Posted

技术标签:

【中文标题】从mysql触发器获取应用程序登录用户【英文标题】:Get application logged in user from mysql triggers 【发布时间】:2021-12-10 07:44:25 【问题描述】:

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

我尝试使用 @user,但它被赋予了 null。

【问题讨论】:

不,这是不可能的,除非你使用不同的 MySQL 用户(你不应该这样做) 【参考方案1】:

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

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

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

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

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

【讨论】:

以上是关于从mysql触发器获取应用程序登录用户的主要内容,如果未能解决你的问题,请参考以下文章

mysql+memcached

我希望能够使用 id 或用户名验证登录表单,同时使用 c# 从 mysql 数据库获取数据

mysql 中的触发器

MySQL从入门到精通50讲(二十三)-EVENT事件

从 MySQL 检索数据 - 仅登录用户

在 MySQL 触发器中,如何获取有关发送请求的用户的信息?