如何使用 Java Spring 在 MySql 中实现多租户 [关闭]

     2023-02-26     190

关键词:

【中文标题】如何使用 Java Spring 在 MySql 中实现多租户 [关闭]【英文标题】:How can I achieve multitenancy in MySql by using Java Spring [closed] 【发布时间】:2018-02-26 05:13:48 【问题描述】:

如何使用 MySql Java Spring 最佳实践实现多租户,并建议使用任何其他数据库代替 MySql 进行多租户写入和读取以用于报告目的。

【问题讨论】:

在此处查看具有完整源代码的有效解决方案。 sunitkatkar.blogspot.com/2018/04/… 【参考方案1】:
    为每个租户提供自己的 MySQL 用户名和密码。 然后给每个租户一个或多个他们自己的数据库。 然后授予每个租户的用户名访问他们拥有的数据库的权限。

这种多租户方法被托管服务提供商上的数百万个 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

【讨论】:

但是如何在运行时使用 java spring 切换租户以根据 tanant id 保存数据,以及如何实现向可以查看所有租户数据的超级用户报告。 如果您想澄清您的问题,请编辑您的问题,而不是使用 cmets。

如何在 Spring Boot 中使用 MySql 数据库查询?

】如何在SpringBoot中使用MySql数据库查询?【英文标题】:HowtouseMySqlDatabasequeriesinSpringBoot?【发布时间】:2018-10-1007:18:45【问题描述】:我正在使用SpringBoot创建API。在这个项目中,我使用了springweb、JPA、jstl和MySql作为API的依赖。在... 查看详情

如何在 Spring Boot 中使用复合主键从 MySql 中检索数据

】如何在SpringBoot中使用复合主键从MySql中检索数据【英文标题】:HowtoretrivedatafromMySqlinSpringBootusingcompositeprimarykeys【发布时间】:2021-03-2518:03:27【问题描述】:我正在开发一个简单的SpringBoot项目,以从MySQL表中检索数据,该表将... 查看详情

如何在 Spring 生态系统中使用 JPA hibernate 连接到不同的 mysql 数据库模式?

】如何在Spring生态系统中使用JPAhibernate连接到不同的mysql数据库模式?【英文标题】:HowcanIconnecttodifferentmysqldatabaseschemasusingJPAhibernateinSpringecosystem?【发布时间】:2019-04-0808:41:09【问题描述】:我的SpringBoot应用程序有MySql后端。... 查看详情

如何使用java在mysql中使用\\更新文件路径?

】如何使用java在mysql中使用\\\\\\\\更新文件路径?【英文标题】:Howtoupdatefilepathwith\\\\inmysqlusingjava?如何使用java在mysql中使用\\\\更新文件路径?【发布时间】:2016-11-2310:09:52【问题描述】:用新文件更新附件字段后,mysql文件路... 查看详情

如何使用 MySQL 在 Spring Boot REST API 中放置和获取任何格式的 JSON 对象?

】如何使用MySQL在SpringBootRESTAPI中放置和获取任何格式的JSON对象?【英文标题】:HowdoIPUTandGETJSONobjectofANYformatinaSpringBootRESTAPIusingMySQL?【发布时间】:2021-11-1610:32:54【问题描述】:我需要能够将来自POSTMAN的JSON数据(没有固定格式... 查看详情

java spring boot中使用Mysql函数

】javaspringboot中使用Mysql函数【英文标题】:UsingMysqlfunctioninjavaspringboot【发布时间】:2018-07-1010:10:34【问题描述】:我的存储库中的自定义查询有点问题:@Query("selectvfromVisitvwhereYEARWEEK(\'date\')=YEARWEEK(curdate())")在YEARWEEK(\'date\')左括... 查看详情

如何使用 Hibernate/Spring boot 将 JSON 文件作为 JSON 数据类型存储在 mysql 中?

】如何使用Hibernate/Springboot将JSON文件作为JSON数据类型存储在mysql中?【英文标题】:HowtostoreJSONfileasaJSONdatatypeinmysqlusingHibernate/Springboot?【发布时间】:2020-05-1311:36:21【问题描述】:我尝试了几种将json文件存储在数据库中的方法... 查看详情

如何在 Spring Boot / Spring Data 中为 Amazon RDS Mysql 启用 SSL?

】如何在SpringBoot/SpringData中为AmazonRDSMysql启用SSL?【英文标题】:HowcanIenableSSLforAmazonRDSMysqlinSpringBoot/SpringData?【发布时间】:2016-03-1511:31:11【问题描述】:目前,使用SpringData的SpringBoot应用程序配置为使用非加密连接到AmazonRDS实... 查看详情

我如何使用部署在战争 Spring Boot 应用程序中的 mysql jdbc 驱动程序

】我如何使用部署在战争SpringBoot应用程序中的mysqljdbc驱动程序【英文标题】:HowIcanusethemysqljdbcdriverdeployedinsideawarspringbootapplication【发布时间】:2020-03-0212:27:59【问题描述】:我使用JPA和mysql创建了一个SpringBoot应用程序。当我将... 查看详情

如何使用 mvc spring 将 JSON 数组插入 MySQL

】如何使用mvcspring将JSON数组插入MySQL【英文标题】:howtoinsertJSONarrayintoMySQLusingmvcspring【发布时间】:2015-11-1021:12:11【问题描述】:嗨,我是春天的新手,正在开发一个POST模块。如何在数据库中插入JSON数组。你能告诉我如何解决... 查看详情

如何使用表单创建 mysql 数据库。我正在使用 spring boot

】如何使用表单创建mysql数据库。我正在使用springboot【英文标题】:Howtocreatemysqldatabaseusingaform.iamusingspringboot【发布时间】:2015-07-1001:31:10【问题描述】:我现在正在训练中,我必须从一个表单创建mysql数据库,我必须在其中输... 查看详情

java示例代码_如何使用JAVA在MySQL中添加unicode文本

java示例代码_如何使用JAVA在MySQL中添加unicode文本 查看详情

如何使用 Spring boot 和 MYSQL 为多级菜单列表创建嵌套 JSON?

】如何使用Springboot和MYSQL为多级菜单列表创建嵌套JSON?【英文标题】:HowtocreatenestedJSONforthemulti-levelmenulistusingSpringbootandMYSQL?【发布时间】:2019-10-0922:58:25【问题描述】:我一直在尝试使用MySQL和Springboot创建多级嵌套JSON。我需要... 查看详情

如何从 SQL 脚本、JDBC 或 Spring JdbcTemplate 在 MySQL 中创建函数?

】如何从SQL脚本、JDBC或SpringJdbcTemplate在MySQL中创建函数?【英文标题】:HowtocreateafunctioninMySQLfromanSQLscript,JDBCorSpringJdbcTemplate?【发布时间】:2012-08-1419:36:20【问题描述】:我正在寻找一种在MySQL中创建函数的方法,最好是通过脚... 查看详情

java示例代码_如何在Struts 2上使用Spring Security 3

java示例代码_如何在Struts 2上使用Spring Security 3 查看详情

java示例代码_Spring MVC:如何在使用AbstractCommandController时显示错误

java示例代码_Spring MVC:如何在使用AbstractCommandController时显示错误 查看详情

使用 Spring Boot 在 JPA 中访问 MySQL 视图

】使用SpringBoot在JPA中访问MySQL视图【英文标题】:AccessMySQLviewinJPAwithSpringBoot【发布时间】:2021-01-2210:50:28【问题描述】:我有一个连接到MySQL数据库的SpringBoot应用程序,并且我已经能够使用这些表,但现在我创建了一个模型、... 查看详情

如何使用 spark 和 java 在 mysql 中插入模型

】如何使用spark和java在mysql中插入模型【英文标题】:Howtoinsertamodelinmysqlwithsparkandjava【发布时间】:2017-02-1014:18:28【问题描述】:我是apachespark的新手,我想在java中使用spark将模型类插入mysqlDb。我尝试过使用下面的代码。但它不... 查看详情