gpt4 book ai didi

asp.net - 从 asp.net 创建临时 MySQL 用户

转载 作者:行者123 更新时间:2023-11-29 14:01:47 25 4
gpt4 key购买 nike

在我的 MySQL 数据库中,我有两种用户

  1. MySQL 用户,用于直接从客户端(例如 MySQL Workbench 或任何 ODBC 编辑器)连接和访问数据库。
  2. ASP.NET 成员(member)用户 + 角色:用于为我的网站提供登录。

我的情况:

当我使用 ASP.NET 用户凭据通过网页登录时。我想创建一个临时随机 MySQL 用户(分配权限、设置密码等)并将其提供给当前登录的(asp.net 用户)以获得对 MySQL 数据库的临时访问权限。

我知道,如果 ASP.NET 用户具有创建用户的 root 访问权限,那么他也拥有对数据库的完全访问权限。我的问题是,我必须提供用户名和密码,以便他可以从另一个客户端连接并直接访问数据库。 (我不想给他 root 访问权限或永久访问权限)

话虽如此,他可以从另一个客户端访问,但我想根据他在我的网页中的登录状态来限制这一点。就像当他退出我的网页时,新创建的 MySQL 用户被标记为过期或删除。

我认为这应该是很有可能的,但我想不出任何起点。有人可以帮助我吗?

亲切的问候

克里什

最佳答案

这是可能的。您可以使用 create usergrant语法来创建您的用户并授予他们权限。

但是,您需要维护一个单独的表来映射 MySQL 用户与到期日期。

您是否考虑过不同的解决方案?

这需要完成更多的工作,但从长远来看可能是一个更稳定/可靠和可扩展的解决方案。

也许使用 NET.NCP 为 MySQL 创建您自己的 WCF 代理,然后您可以拥有由您管理的本地用户帐户/临时帐户,这些帐户/临时帐户对您的 WCF 服务而不是直接数据库进行授权,代理将直接连接到你的数据库。该解决方案也适用于第三方应用程序。

使用自定义代理将为您提供更大的控制权,例如:

  • 能够记录特定用户的 SQL 清理或限制任何内容
  • 您不想在数据库上执行的特定命令没有
  • 可通过互联网直接连接您的 MySQL 服务器
  • 横向扩展时将读取和写入拆分到不同的服务器或集群

编辑 1:根据以下评论:

我不建议在 session 结束时依赖事件,因为该事件并不总是被触发。我建议您创建另一个表来管理用户及其到期时间。例如,保存用户 ID 或用户名和主机以及过期时间的表。根据您的要求,这可以是日期时间/整数(纪元)。然后,您需要调用一个查询来识别该表中所有已过期的帐户,然后您可以从 MySQL 中删除用户帐户。

根据您的 MySQL 版本,您可以将大量逻辑包装到几个存储过程中,这将使查询和维护开销更容易

关于asp.net - 从 asp.net 创建临时 MySQL 用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14955717/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com