上下文: Java客户端应用程序需要访问服务器端MySQL数据库。
需要:限制每个客户端对数据库的可能请求数(基于客户端的IP)。
问题1:是否可以通过更改MySQL数据库设置来实现此目的?
问题2:允许直接从客户端应用程序访问数据库是一个好主意吗?或者我应该让客户端应用程序通过TCP与服务器端应用程序通信? (因此只允许服务器端应用程序访问数据库)
答案 0 :(得分:4)
是。查看MySQL's GRANT
statement的语法。在with_option中,您可以指定MAX_QUERIES_PER_HOUR
。您甚至可以为现有用户设置限制而不影响其他权限:
在
db
上授予使用权。*要......使用MAX_QUERIES_PER_HOUR要求SSL 120 MAX_UPDATES_PER_HOUR 100;
当然,只要客户端位于数据库的内部网络上,并且只给予他们正常运行所需的最小权限。维护所有客户端的MySQL授权可能有些困难,但至少你会使用经过验证的安全系统,而不是试图将安全系统重新编写为服务器端应用程序,这可能会有错误。
答案 1 :(得分:3)
关于问题2.
我认为这取决于数据的敏感性,服务器与客户端之间的网络连接以及客户端的推出架构。
我个人会选择中间服务器,因为维护和优化更简单。 Python和Java都有很好的解决方案,允许您快速创建具有数据库访问权限的SOAP / XML服务器。然后,您可以根据特定屏幕中的需要定义XML消息,使用适当的锁定,并且不考虑(ehm)数据库模式。它将数据库模型与客户端中的MVC模型分离,并允许客户端相对干净。
答案 2 :(得分:2)
答案 3 :(得分:1)
客户 - >服务器 - >数据库当然是最安全的方法,因为客户端 - >数据库要求客户端应用程序包含数据库登录凭据。
与客户合作 - >服务器 - >数据库使问题1无效:]。