由于MySQL没有角色的概念,你要么必须使用不同的MySQL数据库用户和数据库,实现数据的同一逻辑分离。实际上,在确定上下文之后,必须使用不同的myswl用户帐户和不同的默认数据库连接到mysql。缺点是这种解决方案会使连接池处于惰性状态。幸运的是,在MySQL中建立到数据库的新连接很快,并且不需要太多资源。
或者,你可以使用一个单一的数据库和MySQL用户账户,用户在应用程序的用户帐户级别区分。显然,这意味着用户的数据不会像现在那样具有相同的逻辑分隔,但仍可以使用连接池。
与用户就可以使用相同的MySQL用户帐户以及默认的数据库连接到MySQL,但存储在不同的数据库只使用单独的MySQL用户帐户访问的实际用户数据的数量有限的第三种选择。但是,在该默认数据库中,为用户数据库中的每个表创建单独的views。在create view语句中,将definer子句设置为可以访问存储表的给定数据库的mysql用户帐户,并将sql安全子句设置为定义者。这样,您仍然可以使用连接池,因为连接是使用通用用户标识创建到默认数据库。客户端数据将在逻辑上在数据库中分开。缺点是,通过默认数据库中的视图,所有数据都可以访问,并且底层数据结构的任何修改都必须反映在视图中。