我们的 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 服务器上设立任何没有密码的帐户。