N.B。这不是另一个"一个大型DB或几个小型DB"问题
将一个大型MySQL数据库用于多个客户端(相同结构等),并使用user
列分隔客户端,是否可以限制具有匹配user
列的用户的表访问权限`?
我对Microsoft的SQL Server不太熟悉,但我读到了一些关于"多租户数据架构"这似乎提供了这个。
MySQL有类似的东西吗?
答案 0 :(得分:1)
我建议不要为所有客户提供1个大型数据库,原因有多种:
您想拥有的更好的多租户架构是:
这是一篇很棒的文章,标题为" High Availability, Load Balancing, and Replication,"这将为您提供建立强大的多租户系统的良好入门。我还建议您阅读High Scalability
上的文章如果您有任何疑问,请与我们联系!
答案 1 :(得分:1)
MySQL具有表级和列级权限,但不具有行级权限。
最接近的是定义用户访问表的VIEW。该视图具有访问基表的权限,每个用户都有权访问该视图。
定义视图以限制对当前用户的访问。
mysql> create table base (user varchar(16), x int);
mysql> insert into base values ('root@localhost', 123), ('bill@localhost', 456);
mysql> create view v as select * from base where user = USER() with check option;
mysql> select * from v;
+----------------+------+
| user | x |
+----------------+------+
| root@localhost | 123 |
+----------------+------+