MySQL root 密码可以留空吗?

MySQL root 密码可以留空吗?

如果我的 MySQL 服务器只接受来自本地主机的连接,那么没有密码的 root 用户是否会构成安全漏洞?

我知道,一般人认为 root 用户应该受密码保护,但将其留空会有什么后果?我并不担心除我自己的用户之外的其他 Linux 用户是否连接到 MySQL,而且我也不打算允许网络访问数据库。

编辑:MySQL 与不受密码保护的 SQLite 有何不同?我们谈论的是哪种部署方案?如果攻击者获得了对服务器的访问权限,那么什么可以阻止攻击者简单地重置密码?

请记住,我并不是想在这里倡导什么,我只是希望人们对此事提供明智的意见。

答案1

是的,我认为这是相当基本的安全漏洞。让我用一个故事来说明这一点。

很久很久以前,在我年轻、知识匮乏的年代,我设置了一个服务器,用于内部测试我测试的各种零碎东西。它放在我的桌子上,没有连接到任何网络(那是很久以前了,在一切事物出现之前连接到网络才能做任何事情)。当我不在办公室时,其他人需要一台机器,并拿走了我的测试机(我不介意;我使用这台机器是因为必要时可以拿它做其他事情)。由于它已经在运行所需的操作系统,他们只需将其插入网络并安装所需的内容即可。

问题是,我在那台机器上设置了各种测试账户,密码很容易猜到(比如一直很有用的test)。即使在很久以前,也有很多不法之徒,他们除了猜测账户密码外什么都做不了。没过多久,他们就找到了这台机器,猜出密码,然后用它干坏事了。

这个故事的寓意是什么?需求会改变。即使你现在不指望这样做,在机器的整个生命周期中,它的角色也很有可能发生变化——我认为最有可能的结果是其他用户将能够访问该机器(无论是合法访问,还是通过应用程序级漏洞访问)。在必要时,你会记得设置 MySQL 根密码的机会……充其量也微乎其微。

我的建议是花 10 秒钟设置 MySQL 根密码并将其放入~root/.my.cnf。一次性的时间成本远远低于泄露成本乘以泄露概率。

答案2

确实如此。您无需担心除您之外的其他 Linux 用户是否连接到 MySQL,除非他们放弃 MySQL 中的所有内容,否则您永远不会担心。

现在,认真地讲,你应该添加一个密码。考虑一下,如果有人试图进入你的服务器,他们将不得不从服务器上破解用户密码,然后还要从 MySQL 中破解 root 密码。如果你没有 MySQL 密码,那么破解它就更容易了。

此外,没有哪个程序是没有缺陷的。试想一下,如果 MySQL 中的一个缺陷将每个连接都视为“本地”,那么您将面临大麻烦。

相关内容