MySQL 日志显示 3 个 root 用户,其中 2 个没有密码?为什么?

MySQL 日志显示 3 个 root 用户,其中 2 个没有密码?为什么?

我们的 MySQL 日志在重新启动时显示一条警告,提示有 2 个 root 用户没有密码。

我进入 MySQL 并检查了所有用户:

mysql> select * from mysql.user;

并看到:

Host       |    User   |   Password
localhost       root      *76685yt868itetc
web12-b0        root
127.0.0.1       root  

首先,为什么有 3 个 root 用户(因为我们有 localhost,所以我们是否需要 127.0.0.1)?

第二,为什么其中两人没有设置密码?

第三,web12-b0 和 127.0.0.1 主机是否具有完全的 root 访问权限,而无需使用密码(如所示)?

第四,这样做是否有正当理由,或者我应该建议管理员在这两台主机上设置密码?

谢谢您的回答。

答案1

我知道这是一个老话题,但我想补充几点:

首次创建数据库时,会默认生成三个 root 用户。这些用户均没有密码。此时,安装程​​序还会建议您通过运行来设置密码mysqladmin -u root password,这将更改 'root'@'%' 的密码。

仍然没有密码的两个位于 Host 列中指定的主机本地;在这两种情况下,它都是实际的 DB 服务器。默认情况下,它们都具有对数据库的完全访问权限。人们可能会正确地推测,在许多情况下,如果您首先能够登录到计算机(这对于使用这两个 root 帐户中的任何一个都是必要的),那么您可能可以访问磁盘上的实际文件。因此,在这些服务器上设置密码可能不会带来任何真正的安全性。

话虽如此,我还是倾向于删除这些默认帐户,并坚持使用密码帐户。

DELETE FROM mysql.user WHERE Password=''; FLUSH PRIVILEGES

答案2

首先,为什么有 3 个 root 用户

因为有人添加了三个root用户。

(因为我们有本地主机,所以我们需要 127.0.0.1 吗)?

在 MySQL 中,localhost 和 127.0.0.1 有根本区别。MySQL 中的主机“localhost”表示“使用 unix 套接字进行本地连接”。127.0.0.1 主机表示“使用 TCP 通过环回接口进行连接”。

第二,为什么其中两人没有设置密码?

因为没有人给他们设置密码。

第三,web12-b0 和 127.0.0.1 主机是否具有完全的 root 访问权限,而无需使用密码(如所示)?

您提供的信息不足以回答这个问题。MySQL 中用户的存在意味着除了USAGE(连接能力)之外没有其他权限。要查看用户的权限,您必须使用:

SHOW GRANTS FOR user@host;

第四,这样做是否有正当理由,或者我应该建议管理员在这两台主机上设置密码?

我建议不要在 MySQL 服务器上设立任何没有密码的帐户。

相关内容