2010-07-11 101 views
4

我们正在构建一个多用户应用程序,其中每个用户都有一个数据库。所有客户数据库结构都相同。现在我们正在生成一个新的mysql用户(每个客户端),它只具有在其自己的数据库上工作的权限。使用单个或多个mysql用户用于多租户架构的SaaS PHP/mysql应用程序

例如mysql user1拥有dbase1。*(database1.alltables)的权限,mysql user2拥有dbase2。*的权限。

我们现在注意到,这已经是一个痛苦转移到另一台服务器作为备份(我们不使用复制,但尝试暂时转储文件一次,但不能删除information_schema dbase &从sql重新创建文件似乎

无论如何,我们想知道是否最好只使用一个可以访问所有客户端数据库的用户呢?这是更不安全的权利?还是可以以一种相当安全的方式使用?

您的想法是什么?

回答

2

Wha您可能想要做的是,在为MySQL用户创建时,还会将该用户创建的记录存储在其他位置(数据库外部),然后使用脚本将用户及其权限恢复到该数据库中记录你创建的。

+0

谢谢,这是一个很好的提示,但我们仍然必须管理所有这些用户帐户。有没有办法用一个帐户做到这一点,仍然保持安全? – Jorre 2010-07-12 07:23:19

+1

好吧,多用户帐户的优势在于它为您提供了另一层隔离 - 如果由于某种原因执行了SQL注入,它可以触及的最多的是单个客户的数据。 除此之外,理论上你可以为数据库编写你自己的封装层,它只会强制访问当前客户的数据库,这会给你类似的好处;你只是相信你的编码,而不是MySQL团队的编码。 – Amber 2010-07-12 08:06:02