重置然后恢复mysql密码

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

我需要:

  1. 将当前的mysql根密码散列保存在某处
  2. 重置它
  3. 做的东西作为mysql根(重置数据库的用户pw)
  4. 恢复旧的根密码

如何做点1和4?

通用密码重置过程通过创build重置根密码的初始化文件来执行。 然后用一个选项重新启动服务器,迫使它以root用户身份运行该脚本。

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

所以,如果你有能力重新启动mysql服务器,并指定一个初始化文件,你可以跳过步骤1,2和4,只需以root用户身份运行一个脚本。 真的没有理由需要触摸根帐户。

警告:需要mysql重新启动步骤1-3

这可以做到没有…

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

一旦你login到Linux Box,为了使用密码t3mpp@assw0rd为自己创build一个临时根目录,执行以下步骤

STEP 01) service mysql restart --skip-networking --skip-grant-tables

步骤02)在Linux提示符下,inputmysql然后回车

步骤03)运行这个SQL命令

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

STEP 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'; 

STEP 05) service mysql restart

这将做你的步骤1-3。

密码恢复

要恢复原始的MySQL根目录,请执行此操作( 不需要MySQL重新启动 ):

步骤01)在Linux提示符下,inputmysql -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 

而已。

试一试 !!!

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

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