一)Windows:
1)以系统管理员身份登陆系统。
2)打开cmd-----net start 查看mysql是否启动,如果启动了就输入net stop mysql命令停
止mysql服务
3)进入mysql安装路径的bin目录下 d:\usr\local\mysql4\bin
4) 在命令行输入 mysqld --skip-grant-tables启动mysql服务(服务器将不加载权限判断,
任何用户都能访问数据库)。此命令运行之后,用户无法再输入指令,此时如果在任务管理器中
可以看到名称为 mysqld的进程,则表示可以用root用户登录服务器了。
注:我如果安装的是MySQL8.0版本的,mysqld --skip-grant-tables没有效果,需要
输入mysqld --shared-memory --skip-grant-tables才有效果。
5)打开另一个cmd窗口,进到d:\usr\local\mysql4\bin,输入不加密码的登录命
令 mysql -u root。 登录成功后可以使用update语句修改密码,修改完成后,必须使用
flush privileges语句刷新权限表,这样新的密码才能生效:
d:\usr\local\mysql\bin\mysqladmin -u root flush-privileges password "newpassword"
d:\usr\local\mysql\bin\mysqladmin -u root -p shutdown 这句提示你重新输密码。
6)输入mysqld --skip-grant-tables命令的命令行窗口关闭,在cmd里net start mysql使用新密码登录mysql服务器。
二)Linux:
方法一:
如果忘记了MySQL root密码,可以用以下方法重新设置:
1.KILL掉系统里的MySQL进程;
killall -TERM MySQLd
2.用以下命令启动MySQL,以不检查权限的方式启动;
safe_MySQLd --skip-grant-tables &
3.然后用空密码方式使用root用户登录 MySQL;
MySQL -u root
4.修改root用户的密码;
MySQL> update MySQL.user set password=PASSWORD('新密码') where User='root';
MySQL> flush privileges;
MySQL> quit
重新启动MySQL,就可以使用新密码登录了。
方法二:
可能有的系统中没有safe_MySQLd程序(比如 ubuntu操作系统, apt-get安装的MySQL) , 那么使用下面方法也可以恢复密码(和Windows类似):
1.停止MySQLd;
sudo /etc/init.d/MySQL stop
(您可能有其它的方法,总之停止MySQLd的运行就可以了)
2.用以下命令启动MySQL,以不检查权限的方式启动;
MySQLd --skip-grant-tables &
3.然后用空密码方式使用root用户登录 MySQL;
MySQL -u root
4.修改root用户的密码;
MySQL> update MySQL.user set password=PASSWORD('newpassword') where User='root';
MySQL> flush privileges;
MySQL> quit
重新启动MySQL
/etc/init.d/MySQL restart
就可以使用新密码 newpassword 登录了。
三)常见问题:
一定要注意在Windows中如果安装的是MySQL8.0版本的,mysqld --skip-grant-tables没有效果,需要输入mysqld --shared-memory --skip-grant-tables才有效果。