繁体   English   中英

MySQL数据库命名

[英]MySQL Database Naming

这可能是一个愚蠢的问题,但我确实没有在线找到答案。 多年以来,我一直将一个新的mysql数据库命名为神秘的。 通常每个站点只有一个数据库,因此使用“ x7s9u3or8wj”这种神秘的命名方法并不困难。 我一直担心安全性,但是从来没有任何具体数据表明必须以加密方式命名数据库。

现在,我正在构建一个需要多个数据库的网站。 与使用类似_users _content _common的命名方案相比,使用隐式命名会使事情变得更困难。

用常用词命名数据库会带来安全风险吗? 我的用户名和密码始终保密。

谢谢!

用有意义的名称命名数据库。 隐名不会解决您可能遇到的任何安全问题,也不会使不良代码更不容易受到SQL注入的攻击。 一旦可以注入您的SQL调用,无论您使它们多么愚蠢,我都可以找到您的数据库名称。

使用分布广泛的CMS系统的人有时会重命名DMS和表以尝试使爬网程序尝试使用众所周知的漏洞,但这对于一次性系统而言将不是问题。

以加密方式命名您的数据库只能通过混淆来提高安全性 ,并且由于这不是可实现的安全性功能,因此它无济于事。

无论如何,正如Ray所说,如果您的代码具有任何可能使您可以访问数据库的漏洞,那么数据库名称仍将是已知的。

您的安全措施仅在您要与其他用户共享MySQL服务器并且不希望他们知道您在其中存储了什么的情况下起作用。

使用安全密码非常好。

当心,您的脚本将以明文形式存储数据库密码。 因此,如果您与其他用户共享应用程序空间,请确保他们无法访问存储DB密码的文件。 此外,您可以尝试其他安全措施,例如在建立数据库连接后在运行时删除密码信息。

即在PHP中:

$db = "someCrypticPassword";
$conn = mysql_connect($host, $user, $pass, ...);
$db = "no-real-password";

我将在一个主数据库中有一个表(masterDB),其中包含所有单个DB的ID,名称和其他数据。 每次建立新数据库时,都会使用新记录更新主数据库表。 然后,将该记录ID附加到新的数据库名称中。

 masterDB.acct_id=1
 masterDB.acct_id=2
 etc, this table would hold the account name as well as the ID which is auto_incremented with each new record.

然后,每个新帐户数据库名称将使用标准前缀动态命名,并附加主数据库ID。

acctDBName_1, acctDBName_2 etc..

查找有关子项的数据时,可以引用Master DB。 子项只能包含与每个子项相关的数据。 祝好运。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM