我刚接手一个数据库,没有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的控制台都登陆不了。这是怎么回事?我那里操作有问题吗?看网上很多人都似乎解决了问题,为什么我这里表面上看修改成功了,但是真正再次启动服务的时候密码 又不好使了呢?希望得到大家的帮助,急用,先谢谢谢谢!!!

解决方案 »

  1.   

    mysql>use mysql;
    再执行下述SQL语句,分号作为语句结束符
       >update user set password=password("my23456") where user="root";  
       >flush privileges;  
       >quit
      

  2.   

    重新以 mysqld-nt --skip-grant-tables   启动,然后看一下
    select * from user where user="root";  应该是多条记录,你不应该全部修改。 
    当你用phpmyadmin登录后,show grants 一下,应该不是以root@localhost 账号。
      

  3.   

    这个分号输入的时候用带着吗?
    yesuse mysql;
    update user set password=password("my23456") where user="root";
    ...
      

  4.   

    老大,我搜索的时候,看到你那个经典的回帖,帮了很多人,但是我不知道我的问题出现在那里?我新接手mysql,水平极其有限,你说的我晚上试试,白天试验怕影响网站运行。
    另外,你说的“应该是多条记录,你不应该全部修改。”如果是真的,那么我该如何解决呢?
    谢谢回帖的2位!