我有一个客户的请求,我很确定答案是否定的,但是想知道是否有人有不同的答案。
背景
您知道MySQL安装会创建一个名为“ mysql”的数据库,该数据库存储我们创建的数据库以及用户。
在用户表中,有一个名为“ authentication_string”的字段,用于保存用户密码。
项目
在此项目上,每当客户创建一个帐户时,都会创建一个新的数据库用户并创建数据库。
当客户通过Web界面登录时,系统会调用API进行身份验证。之后,使用root db用户连接到客户数据库,而不是他们自己的数据库凭据,为什么?因为他们不想在数据库上保存用户和密码(这是临时解决方案)
他们希望更改应用程序,以便在身份验证/授权过程之后,他们将只需要root凭据即可以某种方式从“ mysql db”获取用户和密码,然后使用它们使用客户db凭据创建连接。
这可能吗?还是有一些mysql父级-子级配置(在这种情况下可行)?
项目使用MySQL 5.7
答案 0 :(得分:0)
据我了解,我认为您可以使用MySQL的SET PASSWORD
为用户设置一些随机的强密码,然后使用该密码登录。这样一来,您将不会存储任何内容,并且假设您的根数据库访问权限与尝试以用户身份登录的访问权限完全隔离,那么它将仍然相当安全。
例如:
SET PASSWORD FOR some_user = <long-strong-randomly-generated-password-string>
之后,您从提供访问的过程中返回此<long-strong-randomly-generated-password-string>
,然后用户进程可以使用该登录名登录。在这种情况下,它会一直保持有效,直到下一个SET PASSWORD
,因此请记住这一点,但要视您的用例而定。