对于 root 用户来说,设置 mysql root 密码有什么意义?

对于 root 用户来说,设置 mysql root 密码有什么意义?

作为 Fedora 上的 root 用户,我安装了 mysql 服务器,并设置了 mysql root 密码。后来我忘记了密码,于是使用sudo mysqld_safe --skip-grant-tables &并绕过了密码,对数据做了一些更改,然后重启了服务器,甚至没有更改 mysql root 密码!

这是否意味着如果有人拥有 root 权限,他就可以做任何事情,甚至无需重置 mysql root 密码?(至少如果更改了 mysql root 密码,我们就可以知道有些事情很可疑)

在任何情况下重置密码或绕过:

说真的,mysql root 用户的 root 密码有什么意义呢?

答案1

这是否意味着如果有人拥有 root 权限就可以做任何事情,甚至无需重置 mysql root 密码?

是的。

如果 mysql root 密码被更改,我们至少可以知道有些事情很可疑

你已经知道有些事情很可疑,因为数据库服务器下去了片刻之间。

对于 root 用户来说,mysql root 密码有什么意义?

这比没有它更简单。

传统上,MySQL 有一个 root 密码,以便你可以执行 MySQL root 操作没有拥有操作系统根访问权限 – 您不必这样做sudo mysql,您可以成为普通用户并运行mysql -uroot并进行更改。

但是,密码检查不是由mysql客户端工具完成的,而是由 mysqld 守护进程完成的,它只处理入站连接,并且本身并不知道每个连接是否来自以普通用户身份运行的 mysql 客户端,或者客户端是否以 root 身份运行。

守护进程知道本地套接字的客户端 UID,但检索该信息需要额外的代码,这些代码需要实现和测试(对于每个操作系统分别进行,例如 Linux 与 FreeBSD 略有不同,在 Windows 上则完全不同)。

换句话说,无论客户端是否是 root 用户,询问所有客户端密码并不需要花费任何精力,但需要额外的努力实现root密码绕过。

MySQL 和 MariaDB 现在都默认这样做(开箱即用,MariaDB 有一个无密码的根帐户,只有 UID 0 才能访问),但由于这是安全策略的改变,因此不能追溯应用于现有安装。

答案2

只有当您具有机器的 shell 访问权限时才可以执行此操作。

如果root无需密码即可访问该帐户(顺便说一下,可以设置IIRC),则任何可以连接到您的 MySQL 实例的人都可以以 的身份进行身份验证,从而root有效地将整个安全系统抛到九霄云外。

相关内容