前言:最近又重新用了几个不常用的Mysql,结果因为记录不是很完整,最高管理的账号密码不记得了,但里面的数据又比较重要不想重新装。正好一个Linux下一个Windows下。让我碰全了。在网上,我查了下资料,有些啰嗦不简洁,有些简单无解释。以下介绍两个系统平台下的解决办法。

[windows]
1、停止mysql服务:打开命令行窗口CMD,Net stop mysql
2、用另外一种方式启动Mysql:在命令行进入到mysql的安装路径下的bin目录下使用mysqld-nt.exe启动:mysqld-nt --skip-grant-tables
   注意:此时CMD窗口不能关闭。
3、进入Mysql:另外打开一个命入令行窗口,在bin目录下执行mysql,此时无需输入密码即可进入。
>use mysql
>update user set password=password("new_pass") where user="root";
>flush privileges;
>exit
   注意:1)如果对sql语句熟悉的话,update这句就不用解释了第一个User是表名、第二个User是表中的字段。第一个Password是表中的字段,第二个Password()是加密用的函数。new_pass是要更改的密码。
        2)flush privileges可以不用添加。但是如果添加了,一定要注意Host字段不能是Localhost。因为用了这个之后就不能用Localhost连接了。你可以把这个字段改成IP,或者通配符。
>update user set host="192.168.0.1" where user="root"
4、使用任务管理器,找到mysqld-nt的进程,结束进程!
5、重新启动mysql服务,net start mysql 就可以用新密码登录了。
 
 
[linux]
1、关闭Mysql: 如果 MySQL 正在运行,首先杀之 killall -TERM mysqld
2、另外的方法启动 MySQL :bin/safe_mysqld --skip-grant-tables &
3、可以不需要密码就进入 MySQL 了。
然后就是
>use mysql
>update user set password=password("new_pass") where user="root";
>flush privileges;
   注意点同上
4、重新杀 MySQL ,用正常方法启动 MySQL 。
 
 
方法1: 用SET PASSWORD命令
  mysql -u root
  mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');
方法2:用mysqladmin
 
  mysqladmin -u root password "newpass"
  如果root已经设置过密码,采用如下方法
  mysqladmin -u root password oldpass "newpass"
方法3: 用UPDATE直接编辑user表
  mysql -u root
  mysql> use mysql;
  mysql> UPDATE user SET Password = PASSWORD('newpass') WHERE user = 'root';
  mysql> FLUSH PRIVILEGES;
在丢失root密码的时候,可以这样
  mysqld_safe --skip-grant-tables&
  mysql -u root mysql
  mysql> UPDATE user SET password=PASSWORD("new password") WHERE user='root';
  mysql> FLUSH PRIVILEGES;