我们正在构建一个多用户应用,每个客户都有一个数据库。所有客户数据库结构都相同。现在我们正在生成一个新的mysql用户(每个客户端),它只有在自己的数据库上工作的权限。
e.g。 mysql user1拥有dbase1。*(database1.alltables)的权限,mysql user2拥有dbase2的权限。*。
我们现在注意到,作为备份转移到另一台服务器已经很痛苦了(我们不使用复制但尝试偶尔转储文件但是不能删除info_schema dbase并从sql重新创建文件似乎。
无论如何,我们想知道只使用一个可以访问所有客户端数据库的用户会更好吗?这更不安全吧?或者它可以以相当安全的方式使用?管理肯定会更好。
你有什么想法?
答案 0 :(得分:3)
您可能想要做的是,在创建MySQL用户时,还将该用户创建的记录存储在其他位置(在DB之外),然后使用脚本将用户及其权限还原到来自您创建的记录的数据库。
答案 1 :(得分:0)
这在某种程度上取决于您的要求(特别是与从备份中还原客户端有关),但是我为我的所有租户使用了一个数据库/架构,但没有租户看到其他租户的数据的可能性。
由于您的应用程序将使用特定于租户的用户连接到数据库,而该用户只能访问tenant_id =他们的用户所在的行,因此数据将按租户进行分段。
我能够使用这种技术在周末更改很少的情况下将大型单租户应用程序转换为多租户。我在博客中记录了完整的解决方案:https://opensource.io/it/mysql-multi-tenant/