Windows下如何重置MySQL密码?

Windows下如何重置MySQL密码?

当尝试重新启动我的 MySQL 密码时,我在控制台中得到以下输出(这也是导致输出的输入):

C:>“C:\MySQL\bin\mysqld”--console --init-file=C:\mysql--init.txt

111008 23:42:48 [Note] Plugin 'FEDERATED' is disabled.
111008 23:42:48 InnoDB: The InnoDB memory heap is disabled
111008 23:42:48 InnoDB: Mutexes and rw_locks use Windows interlocked functions
111008 23:42:48 InnoDB: Compressed tables use zlib 1.2.3
111008 23:42:48 InnoDB: Initializing buffer pool, size = 45.0M
111008 23:42:48 InnoDB: Completed initialization of buffer pool
InnoDB: Error: log file .\ib_logfile0 is of different size 0 5242880 bytes
InnoDB: than specified in the .cnf file 0 24117248 bytes!
111008 23:42:48 [ERROR] Plugin 'InnoDB' init function returned error.
111008 23:42:48 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.

111008 23:42:48 [ERROR] Unknown/unsupported storage engine: INNODB 
111008 23:42:48 [ERROR] Aborting

111008 23:42:48 [Note] C:\MySQL\bin\mysqld: Shutdown complete

答案1

如果你已经按照步骤手册你只需要执行以下命令:

C:\> C:\mysql\bin\mysqld --init-file=C:\\mysql-init.txt

这将自动重置密码(因为您使用命令写入了文件来执行此操作(步骤 3))。

如果此命令不起作用,只需执行另一个命令:

C:\> "C:\Program Files\MySQL\MySQL Server 5.5\bin\mysqld.exe"
        --defaults-file="C:\\Program Files\\MySQL\\MySQL Server 5.5\\my.ini"
        --init-file=C:\\mysql-init.txt

答案2

手册上说:

C.5.4.1.1. 重置根密码:Windows 系统在 Windows 上,使用以下步骤重置所有 MySQL 根帐户的密码:

  1. 以管理员身份登录您的系统。
  2. 如果 MySQL 服务器正在运行,请停止它。对于作为 Windows 服务运行的服务器,请转到服务管理器:从“开始”菜单中,选择“控制面板”,然后选择“管理工具”,然后选择“服务”。在列表中找到 MySQL 服务并停止它。如果您的服务器没有作为服务运行,您可能需要使用任务管理器强制停止它。
  3. 创建包含以下语句的文本文件。将密码替换为您要使用的密码。

    UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root'; FLUSH PRIVILEGES;
    

    将 UPDATE 和 FLUSH 语句分别写在一行上。UPDATE 语句会重置所有 root 帐户的密码,而 FLUSH 语句会通知服务器将授权表重新加载到内存中,以便它能够注意到密码更改。

  4. 保存文件。在本例中,文件将被命名为 C:\mysql-init.txt
  5. 打开控制台窗口以进入命令提示符:从开始菜单中,选择运行,然后输入 cmd 作为要运行的命令。
  6. 使用特殊选项启动 MySQL 服务器--init-file(请注意选项值中的反斜杠要加倍):

    C:\> C:\mysql\bin\mysqld-nt --init-file=C:\\mysql-init.txt 
    

    如果你将 MySQL 安装到 以外的位置C:\mysql,请相应调整命令。服务器--init-file在启动时执行由选项指定的文件的内容,更改每个 root 帐户密码。--console如果希望服务器输出显示在控制台窗口而不是日志文件中,也可以将选项添加到命令中。如果使用 MySQL 安装向导安装了 MySQL,则可能需要指定一个选项--defaults-file

    C:\> "C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld-nt.exe" --defaults-file="C:\\Program Files\\MySQL\\MySQL Server 5.0\\my.ini" --init-file=C:\\mysql-init.txt 
    

--defaults-file可以使用服务管理器找到适当的 设置:从开始菜单中,选择控制面板,然后选择管理工具,然后选择服务。在列表中找到 MySQL 服务,右键单击它,然后选择属性选项。可执行文件的路径字段包含该--defaults-file设置。7. 服务器成功启动后,删除C:\mysql-init.txt

因此,首先您必须按照第 3 点所述创建文件,然后使用命令行(开始->运行->CMD(ENTER)),运行 mysqld-nt.exe,并使用--init-file指向该文件的参数。请记住对 mysqld-nt.exe 和您创建的文件都使用完整路径。

答案3

就您而言,在您重置密码之前,您需要先解决启动问题。

请注意 MySQL 错误日志中列出的第一个错误:

InnoDB: Error: log file .\ib_logfile0 is of different size 0 5242880 bytes
InnoDB: than specified in the .cnf file 0 24117248 bytes!

这意味着您可能已从其他位置复制了数据库文件,或者您已编辑了 my.cnf 设置,并且它们不再与实际 ib_logfile0 文件大小匹配。首先关注这个问题。

答案4

2011 年 9 月 26 日,我在 DBA StackExchange 上回答过一个类似的问题

这个人接受了我的回答。

它就像是对 my.ini 的破解,并且应该可以为你工作。

更新时间:2011-10-19 07:12 EDT

您所要做的就是删除 ib_logfile0 和 ib_logifle1,mysqld 将使 InnoDB 重新生成这两个 innodb 日志文件。

我希望早点看到错误日志。这段时间我一直在帮助你解决授权问题。

相关内容