本文主要是针对mysql重置密码过程中出现“mysqld不是内部命令或外部命令”的问题而写的。
网上有很多关于mysql忘记密码了如何找回的文章,但是很多说的都不够详细,特别是还要用到DOS命令,可能这对于很大一部分刚接触这方面的朋友来说还是个难题。本文针对网上教程中有难点和疑惑的步骤进行再次剖析,如果能让你少走一步弯路,那我的目的也就达到了。下面是网上流传最多的方法,原作者无从知晓,这里表示感谢。
- 关闭正在运行的MySQL。
- 打开DOS窗口,转到mysqlbin目录。
- 输入mysqld --skip-grant-tables回车。如果没有出现提示信息,那就对了。
- 再开一个DOS窗口(因为刚才那个DOS窗口已经不能动了),转到mysqlbin目录。
- 输入mysql回车,如果成功,将出现MySQL提示符 >
- 连接权限数据库>use mysql; (>是本来就有的提示符,别忘了最后的分号)
- 改密码:> update user set password=password("123456") where user="root"; (别忘了最后的分号)
- 刷新权限(必须的步骤)>flush privileges;
- 退出 > q
- 注销系统,再进入,开MySQL,使用用户名root和刚才设置的新密码123456登陆。
主要是第二步:“打开DOS窗口,转到mysqlbin目录。”
可能有童鞋不知道这一步如何操作
具体就是:使用win+r键,打开运行,键入cmd敲回车就到了DOS窗口。然后找到mysql/bin所在的目录,我是使用APMserv搭建的服务器环境,程序就安装在c盘根目录,所以我的目录是在C:APMServ5.2.6APMServ5.2.6MySQL5.1bin。如果你是使用phpnow搭建的环境,那么你的安装目录应该是你自己指定的,找到它,复制这个地址,然后回到cmd里面,输入cd (cd后面有一个空格),然后鼠标右键粘贴刚才复制的路径,按回车。就转到mysql/bin目录了。
或者,更简单的,在mysql安装目录下新建一个文本文档,输入
cmd.exe
保存,然后将该文档的后缀名改为.bat批处理文件,双击打开就直接切换到该目录了。 然后就到了问题的所在了,这时我们按照这一步
“输入mysqld --skip-grant-tables回车。如果没有出现提示信息,那就对了”
输入mysqld --skip-grant-tables之后就提示“mysqld不是内部命令或外部命令”,是什么原因呢?如果你碰到这个提示的话,将命令改成mysqld-nt --skip-grant-tables之后就可以搞定了。
好了,问题也解决了,其他的按照原教程的步骤来就ok了,需要注意的是下面三个步骤中的命令最后的分号都不能忘了。
连接权限数据库>use mysql;
改密码:> update user set password=password("520") where user="root";
刷新权限(必须的步骤)>flush privileges;
总结:发现出现这个问题是因为使用的mysql版本过低的原因,因为后来的版本更新之后就没有mysqld-nt.exe这个文件了,也就是只有网上流传的教程中的mysqld.exe了。多以,如果你安装新版的mysql就不会出现这个问题了。
From:http://www.augsky.com/78.html