警告:需要重新启动 mysql 才能执行步骤 1-3

警告:需要重新启动 mysql 才能执行步骤 1-3

我有 linux root 密码。那台机器上有 MySQL 服务器。其中一个站点的 ini 被重写,现在无法访问 mysql 数据库。我没有 mysql root 来更改数据库用户的密码。服务器所有者现在正在休假,所以我不能要求他给我 mysql root。我可以重置 mysql root 密码,但我不想。

我需要:

  1. 将当前 mysql root 密码哈希保存在某处
  2. 重置
  3. 以 mysql root 身份执行操作(重置数据库的用户密码)
  4. 恢复旧的 root 密码

第1点和第4点该如何做?

答案1

共同点密码重置程序通过创建一个重置 root 密码的 init 文件来执行。然后重新启动服务器,并选择强制服务器以 root 用户身份使用 root 权限运行该脚本。

示例脚本显示您重置 root 密码,但是没有理由不能简单地让脚本重置您想要重置的用户的密码。

因此,如果您有能力重新启动 mysql 服务器并指定 init 文件,则可以跳过步骤 1、2 和 4,只需以 root 身份运行脚本即可。实际上,您完全没有必要接触 root 帐户。

答案2

警告:需要重新启动 mysql 才能执行步骤 1-3

无需...即可完成此操作。

  • 使用另一个 my.cnf
  • 编辑当前的 my.cnf
  • 超级特权

登录 Linux Box 后,为了使用密码为自己创建临时 root 用户t3mpp@assw0rd,请执行以下步骤

步骤 01)service mysql restart --skip-networking --skip-grant-tables

步骤 02)在 Linux 提示符下,输入mysql并按回车键

步骤 03) 运行此 SQL 命令

SELECT COUNT(1) RootLocalhostExists FROM mysql.user
WHERE user='root' AND host='localhost';
  • 如果RootLocalhostExists为 0,则在此处停止。在我的答案中留下评论。
  • 如果RootLocalhostExists为 1,则继续执行步骤 04。

步骤 04)执行以下 SQL 命令

CREATE TABLE mysql.user2 LIKE mysql.user;
INSERT INTO mysql.user2 SELECT * FROM mysql.user
WHERE user='root' AND host='localhost';
UPDATE mysql.user SET PASSWORD=PASSWORD('t3mpp@assw0rd')
WHERE user='root' AND host='localhost';

步骤 05)service mysql restart

这将完成您的步骤 1-3。

密码恢复

要恢复原始 mysql 根目录,请执行以下操作(不需要重启 MySQL):

步骤 01)在 Linux 提示符下,输入mysql -uroot -pt3mpp@assw0rd并按回车键

步骤 02)执行以下 SQL

DELETE FROM mysql.user WHERE user='root' AND host='localhost';
INSERT INTO mysql.user SELECT * FROM mysql.user2;
DROP TABLE mysql.user2;
FLUSH PRIVILEGES;
EXIT

就是这样。

试一试 !!!

答案3

如果你的 mysql 服务器在 debian(或 ubuntu 或类似系统)上运行,那么你可能可以使用用户debian-sys-maint而不是 mysql root 用户。查看/etc/mysql/debian.cnf

它具有超级权限,可以更改用户密码。

相关内容