管理MySql中的跨数据库读取,视图或权限

时间:2010-03-05 21:26:25

标签: mysql performance permissions views

我将在同一个mySql服务器上使用不同项目的多个表。大部分数据都很敏感,需要落后于权限墙。但是,许多敏感数据表依赖于用户和部门信息的不敏感数据表。所以我看到前面有三个选项,我不确定选哪一个。

具有表级权限的所有数据库

除了我不控制数据库服务器的权限之外,所有解决方案中最简单的,传统上服务器团队只执行数据库级权限并让他们允许它是一场政治斗争,我可能没有影响力赢得,并保持跟踪所有权限将是一种痛苦。

在多个数据库中,具有数据库级权限

我可以将表拆分为数据库区域,因此部门范围的信息(如人员数据)可以在其自己的数据库中,编辑人员数据的工具可以具有对部门数据库的UPDATE& INSERT访问权限。其他工具需要访问人员列表的一部分,公共人员目录具有对员工表的SELECT访问权限,但员工表的部分需要保持私密,如个人联系信息,复制代码或计费索引。我需要将人员表分成公共或私人表,但我会再次遇到表级权限。所以我需要将部门数据库拆分为部门共享部门和部门私人数据库。

跨数据库视图 我会在数据库中创建视图,从该帐户无权访问的其他数据库中提取数据。因此,我可以将所有人员信息放在部门数据库中,然后在Web数据库中创建一个视图,该视图仅提取应公开可用的列(名称,部门,扩展名)。实际上,这将允许我具有列级SELECT权限,而无需使用权限进行清理。我担心的是速度。从中提取数据的原始表将被完全编入索引,但是在查询视图时是否将列编入索引时,文档似乎是矛盾的。

还有其他人使用过这三种选择吗?你有没有想过的更好的吗?除了我为任何选项指出的内容之外,您可以看到哪些陷阱?

1 个答案:

答案 0 :(得分:1)

观看和存储过程是您最好的选择。视图可用于提供通用访问,但如果某些查询执行不足,请重写它们以使用存储过程绕过视图以获得性能。