如何使用Java Spring在MySql中实现多租户

时间:2017-09-17 16:14:49

标签: java mysql database spring-boot database-administration

如何使用MySql Java Spring Best Practices和Suggest实现多租户,以使用任何其他DataBase代替MySql进行多租户写入和读取以用于报告目的。

1 个答案:

答案 0 :(得分:0)

  1. 为每个租户提供他们自己的MySQL用户名和密码。
  2. 然后给每个租户一个或多个他们自己的数据库。
  3. 然后,只授予每个租户的用户名访问权限。
  4. 这种多租户方法被托管服务提供商上的数百万个WordPress安装使用,因此经过现场测试和验证。

    要创建用户,请执行此操作。提供用户的计算机地址

      CREATE USER 'userid'@'localhost' IDENTIFIED BY 'password';
      CREATE USER 'userid'@'%' IDENTIFIED BY 'password';
    

    然后创建数据库(这使数据库与用户的名称相同;这可以方便多租户。

      CREATE DATABASE userid;
    

    然后仅授予用户对该数据库的权限。

      GRANT ALL PRIVILEGES ON userid.* TO 'userid'@'localhost';
      GRANT ALL PRIVILEGES ON userid.* TO 'userid'@'%';
    

    然后刷新权限以使他们“接受”。'

      FLUSH PRIVILEGES;
    

    如果您希望全局报告用户具有对所有数据库的只读访问权限,您可以像这样设置它。

      GRANT SELECT ON *.* TO 'globalreportid'@'localhost';
      GRANT SELECT ON *.* TO 'globalreportid'@'%';
      GRANT SHOW DATABASES TO 'globalreportid'@'localhost';
      GRANT SHOW DATABASES TO 'globalreportid'@'%';
    

    请注意,您可以设计仅使用一个数据库的多租户应用程序,并在各个表中包含用于标识每行的相关租户的列。这是大多数多用户Web应用程序的工作方式。执行各种租户不应该看到对方的规则。在这种情况下,数据取决于您的应用程序。但是,这不是数据库级别的多租户。

    如果您希望有十几个租户使用您的系统,那么在多租户应用程序中为每个租户创建一个单独的数据库通常不是一个好主意。

    数据库安全性是一个复杂的主题。你可以在这里阅读MySQL安全性。 https://dev.mysql.com/doc/refman/5.7/en/security.html