日期:2014-05-16  浏览次数:20756 次

我这样修改mysql的root密码,为什么不行呢?
我刚接手一个数据库,没有root密码,我按照网上的方法修改:
我是window2003系统

1、进入cmd命令行,运行 net stop mysql5_pn (我的mysql服务的名称为啥是这个我不知道),系统提示停止服务成功

2、在命令行进入到mysql的安装路径下的bin目录下使用mysqld-nt.exe启动:mysqld-nt --skip-grant-tables 

3、另外打开一个命入令行窗口,在bin目录下执行mysql,此时无需输入密码即可进入
C:\Program Files\MySQL\MySQL Server 5.0\bin>mysql.exe 这样就进入了mysql>提示符,
mysql>use mysql 
  >update user set password=password("my23456") where user="root"; 
  >flush privileges; 
  >quit

(我不知道上面最后3行的提示符为啥不是“mysql>而是>”了)

之后,我把两个cmd窗口都关闭了,又开了一个cmd,运行net start mysql5_pn,想重新启动服务,结果系统提示启动失败,我到控制面板的“服务”里面启动mysql5_pn,仍然提示失败,但是我通过phpmyadmin是可以通过用户名root和密码my23456登录的,表面上看root密码已经修改成功了。但是在phpmyadmin里很多操作都不能进行,比如要修改root密码,则提示在--skip-grant状态下不能修改面膜。

但是为什么我之前停止了mysql服务,在我想重新启动失败的前提下,这里还能使用数据库呢?我看了一下window的系统进程,发现mysqld-nt这个进程,这是在修改root密码前启动的,看来是他在以--skip-grant模式启动着数据库服务,这种模式还是比较危险的,所以我杀掉这个进程,再次运行net start mysql5_pn ,提示启动成功。但是这下子那个my23456的密码又登录不了数据库了。无论是在phpmyadmin还是在mysql的控制台都登陆不了。

这是怎么回事?我那里操作有问题吗?看网上很多人都似乎解决了问题,为什么我这里表面上看修改成功了,但是真正再次启动服务的时候密码 又不好使了呢?

希望得到大家的帮助,急用,先谢谢谢谢!!!

------解决方案--------------------
mysql>use mysql;
再执行下述SQL语句,分号作为语句结束符
>update user set password=password("my23456") where user="root";
>flush privileges;
>quit
------解决方案--------------------
重新以 mysqld-nt --skip-grant-tables 启动,然后看一下
select * from user where user="root";

应该是多条记录,你不应该全部修改。 
当你用phpmyadmin登录后,show grants 一下,应该不是以root@localhost 账号。