假设您创建了一个博客应用程序,它的数据存储在MySQL数据库中。在您的应用程序配置中,您将数据源名称设置为myBlog
用户root
密码whatever
现在,当用户开始使用您的博客访问,发布和评论线程等时...我假设他们通过应用程序root
以myblog
身份连接...
所以...用户连接到应用程序myBlog
,后者又以用户root
连接到MySQL,使用密码whatever
---它不是真正连接到的用户MySQL,它是应用程序。正确的吗?
此方法是否存在安全问题?我应该在MySQL中为具有特定权限的应用程序myBlog
创建一个新用户名,并仅将root
保留用于管理数据库吗?
答案 0 :(得分:6)
是的,应用程序连接到db。您应该为您的应用程序创建一个新的mysql用户,执行类似
的操作CREATE DATABASE myblog_env;
CREATE USER 'myblogenv-user'@'%' IDENTIFIED BY 'your pw';
GRANT ALL PRIVILEGES ON myblog_env.* TO 'myblogenv-user'@'%' WITH GRANT OPTION;
像上面这样的东西应该这样做。上面的'env'部分是为了你想为不同的环境创建一个新的数据库,比如dev,stage,prod等等......
这样,您的应用程序用户可以完全访问其数据库,但mysql实例中没有其他数据库。
答案 1 :(得分:2)
首先,你不应该使用mysql数据库的root帐户来管理其他任何工作。 其次,从理论上讲,你的博客的用户是你的mysql数据库中的“根”,但希望在执行任何查询之前,你的博客代码中有很多sanatizing和清理...其他任何东西都将是知道是“sql注入”
答案 2 :(得分:2)
你是完全正确的。这称为principle of least privilege。您应该为应用程序提供完成作业所需的最低访问权限。这不是root。
答案 3 :(得分:1)
简短的回答是:是的。
答案很长:
安全性:您的应用程序应该拥有与您自己作为管理员不同的用户。该应用程序用户应该只对其需要访问的特定数据库进行读取(并在必要时写入)权限。此外,它不应具有权限授予权限,也不应具有删除表权限,也不应具有数据库创建/删除权限,也不应具有为您保留的任何其他权限。
便利性:如果您需要更改密码,则无需更改应用程序,反之亦然。