1.打开mysql.exe和mysqld.exe所在的文件夹,复制路径地址
2.打开cmd命令提示符,进入上一步mysql.exe所在的文件夹
输入命令mysqld --skip-grant-tables 回车,此时就跳过了mysql的用户验证。注意输入此命令之后命令行就无法操作了,此时可以再打开一个新的命令行。注意:在输入此命令之前先在任务管理器中结束mysqld.exe进程,确保mysql服务器端已结束运行。
4.然后直接输入mysql,不需要带任何登录参数直接回车就可以登陆上数据库。
5.输入show databases; 可以看到所有数据库说明成功登陆。
6.其中mysql库就是保存用户名的地方。输入 use mysql; 选择mysql数据库。
7.show tables查看所有表,会发现有个user表,这里存放的就是用户名,密码,权限等等账户信息。
8.输入select user,host,password from user; 来查看账户信息。
9.更改root密码,输入update user set password=password('123456') where user='root' and host='localhost';
10.再次查看账户信息,select user,host,password from user; 可以看到密码已被修改。
11.退出命令行,重启mysql数据库,用新密码尝试登录。
12.测试不带密码登录mysql,发现还是能够登陆上,但显示数据库时只能看到两个数据库了,说明重启之后跳过密码验证已经被取消了。
13.我这地方重启数据库之后之所以不带密码任然能够登录是因为我的数据库里存在设无须口令的账户。
备注:注意事项
注意其中需要重启数据库的几个地方
Mysql5.7里面的password变成了authentication_string,所以在查看/修改密码时要注意。
//查看数据库中用户的信息
select user,host, authentication_string from user;
//修改用户的密码:
update mysql.user set authentication_string=password('123456') where user='root' and Host = 'localhost';
修改完密码之后,还需要执行一下下面的语句:
alter user 'root'@'localhost' identified by '上面写的密码';
密码的修改可以参考:http://www.jb51.net/article/77858.htm
忘记密码参考:http://jingyan.baidu.com/article/454316ab4e9e65f7a7c03ad1.html
官方文档说了mysqld --initialize-insecure自动生成无密码的root用户,mysqld --initialize自动生成带随机密码的root用户。data文件夹不为空是不能执行这个命令的。可以先删除data目录下的所有文件或者移走