我们需要在使用MySql 5.0的客户端部署应用程序(由Java开发)WAR文件。但我们希望限制客户端(应用程序所有者,而不是网页访问者)修改数据库中的任何数据。有没有办法保护数据。客户端可以使用该应用程序,但它们不能更改数据库中的任何值。怎么做?
答案 0 :(得分:5)
管理角色/用户权限
创建一个sql用户(你应该已经拥有一个),它只有 SELECT 权限。所以它会像
GRANT SELECT ON db_base.* TO db_user@'localhost' IDENTIFIED BY 'db_passwd';
http://kb.mediatemple.net/questions/788/HOWTO:+GRANT+privileges+in+MySQL
http://blog.wl0.org/2010/01/managing-mysql-grants/
http://www.ntchosting.com/mysql/grant.html
检查以下链接以进一步阅读
FOR MySQL
Best Practice for Designing User Roles and Permission System?
http://www.devshed.com/c/a/MySQL/MySQL-User-Account-Management/
Can't set permissions on MySQL user
http://www.aquafold.com/d7/docs/BD5C99E4-3B55-C812-8318-6338A9A89ED9.html
FOR SQL Server 。
http://www.mssqlcity.com/Articles/Adm/SQL70Roles.htm
http://www.sql-server-performance.com/articles/dba/object_permission_scripts_p1.aspx
https://web.archive.org/web/1/http://articles.techrepublic%2ecom%2ecom/5100-10878_11-1061781.html
答案 1 :(得分:3)
这是不可能的;如果您在客户端部署应用程序,他将拥有凭据,并且能够登录MySQL数据库,并且他是应用程序。因此,他可以对您的应用程序可以对数据库进行任何更改。
安全解决这个问题的唯一方法是在客户端和MySQL数据库之间建立一个层,并确保控制它,以便只能进行“合法”更改。
答案 2 :(得分:2)
只需相应地编写代码,以便用户没有机会修改数据库?即代码不执行任何INSERT
或UPDATE
和/或根据登录/角色控制访问。
老实说,我真的没有预见到任何问题,或者代码必须倾向于SQL injection attacks。
更新:上述答案实际上无关紧要,因为问题已得到澄清。转变为社区维基。