当尝试重新启动我的 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 根帐户的密码:
- 以管理员身份登录您的系统。
- 如果 MySQL 服务器正在运行,请停止它。对于作为 Windows 服务运行的服务器,请转到服务管理器:从“开始”菜单中,选择“控制面板”,然后选择“管理工具”,然后选择“服务”。在列表中找到 MySQL 服务并停止它。如果您的服务器没有作为服务运行,您可能需要使用任务管理器强制停止它。
创建包含以下语句的文本文件。将密码替换为您要使用的密码。
UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root'; FLUSH PRIVILEGES;
将 UPDATE 和 FLUSH 语句分别写在一行上。UPDATE 语句会重置所有 root 帐户的密码,而 FLUSH 语句会通知服务器将授权表重新加载到内存中,以便它能够注意到密码更改。
- 保存文件。在本例中,文件将被命名为
C:\mysql-init.txt
。- 打开控制台窗口以进入命令提示符:从开始菜单中,选择运行,然后输入 cmd 作为要运行的命令。
使用特殊选项启动 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 日志文件。
我希望早点看到错误日志。这段时间我一直在帮助你解决授权问题。