重新控制MySQL中的root用户

💡 原文英文,约500词,阅读约需2分钟。
📝

内容提要

当第一次安装MySQL时,无法使用无密码登录。应在my.cnf中添加skip-grant-tables行以无密码登录,但这存在安全风险。重新控制MySQL中的root用户的步骤:连接到MySQL,使用主数据库,重新定义root用户密码,显示mysql.user表,从my.cnf中删除skip-grant-tables行,重新启动MySQL服务,使用密码连接到MySQL。

🔎

延伸解读

skip-grant-tables 的安全风险

在 my.cnf 中添加 skip-grant-tables 可让任何人无需密码即可连接 MySQL,这相当于暂时关闭了所有权限验证。如果服务器暴露在公网或不可信网络,攻击者可直接访问数据库。因此,完成密码重置后必须立即从配置文件中删除该行并重启服务,避免长期处于无保护状态。

密码重置命令的两种写法

文章给出了两种 UPDATE 语句:一种使用 PASSWORD('myNuevoPassword') 函数,另一种直接赋值 'myNuevoPassword'。如果第一种无法执行,可检查 mysql.user 表的 authentication_string 列,确认当前存储格式,再尝试第二种写法。不同 MySQL 版本对密码函数和字段的支持可能不同,需根据实际环境调整。

操作后的验证与谨慎使用

重置密码后,应通过 SELECT User, authentication_string FROM mysql.user 确认 root 用户的 authentication_string 已更新。随后删除 my.cnf 中的 skip-grant-tables 行,重启 MySQL 服务,并用新密码连接测试。文章最后提醒,此类操作需谨慎,因为涉及最高权限账户,任何失误都可能导致数据库无法访问或安全漏洞。

❓

Q&A

如何在MySQL中重新控制root用户?

首先连接到MySQL,使用主数据库,然后执行UPDATE命令重新定义root用户密码,最后重启MySQL服务。

在MySQL中使用无密码登录的风险是什么?

使用无密码登录存在安全风险,可能导致外部非法访问。

如何确认root用户密码是否已更改?

可以通过查询mysql.user表中的authentication_string列来确认root用户密码是否已更改。

在my.cnf中添加skip-grant-tables的作用是什么?

添加skip-grant-tables可以允许无密码登录,但这会带来安全隐患。

重启MySQL服务后如何使用新密码连接?

使用命令mysql -u root -p,然后输入新密码进行连接。

如果无法执行UPDATE命令该怎么办?

应检查mysql.user表中的authentication_string列,以确认是否有权限执行命令。

🏷️

标签

➡️

继续阅读