首页 > 解决方案 > 使用 mysql db 上的访问信息连接到 MySQL 数据库

问题描述

我有一个客户的要求,我很确定答案是否定的,但想知道是否有人有不同的答案。

背景

如您所知,MySQL 安装创建了一个名为“mysql”的数据库,其中存储了我们创建的数据库以及用户。

在用户表中,有一个名为“authentication_string”的字段,其中保存了用户密码。

项目

在此项目中,每次客户创建帐户时,都会创建一个新的数据库用户和数据库。

当客户通过 Web 界面登录时,系统会调用 API 对其进行身份验证。之后root db用户用于连接客户数据库,而不是他们自己的数据库凭据,为什么?因为他们不想在数据库上保存用户名和密码(这是一个临时解决方案)

他们希望在身份验证/授权过程之后更改应用程序,并且他们将不知何故只需要 root 凭据以某种方式从“mysql db”获取用户和密码,然后使用它们使用客户 db 凭据创建连接。

这可能吗?或者是否有一些 mysql 父子配置在这种情况下是可能的?

项目使用 MySQL 5.7

标签: mysql

解决方案


据我所知,我认为您可以使用 MySQLSET PASSWORD为用户设置一些随机的强密码,然后使用该密码登录。这样,您就不会存储任何内容,并且假设您的 root 数据库访问与尝试以用户身份登录的事物完全隔离,它仍然非常安全。

例如:

SET PASSWORD FOR some_user = <long-strong-randomly-generated-password-string>

之后,您<long-strong-randomly-generated-password-string>从提供访问权限的进程中返回它,然后用户进程可以使用它登录。在这种情况下,它会一直有效到下一个SET PASSWORD,所以请记住这一点,但取决于您的用例,这可能没问题。


推荐阅读