方法/步骤
-
打开mysql.exe和mysqld.exe所在的文件夹,复制路径地址
-
打开cmd命令提示符,进入上一步mysql.exe所在的文件夹。
-
输入命令 mysqld --skip-grant-tables 回车,此时就跳过了mysql的用户验证。注意输入此命令之后命令行就无法操作了,此时可以再打开一个新的命令行。注意:在输入此命令之前先在任务管理器中结束mysqld.exe进程,确保mysql服务器端已结束运行。
-
然后直接输入mysql,不需要带任何登录参数直接回车就可以登陆上数据库。
-
输入show databases; 可以看到所有数据库说明成功登陆。
-
其中mysql库就是保存用户名的地方。输入 use mysql; 选择mysql数据库。
-
show tables查看所有表,会发现有个user表,这里存放的就是用户名,密码,权限等等账户信息。
-
输入select user,host,password from user; 来查看账户信息。
-
更改root密码,输入update user set password=password('123456') where user='root' and host='localhost';
-
再次查看账户信息,select user,host,password from user; 可以看到密码已被修改。
-
退出命令行,重启mysql数据库,用新密码尝试登录。
-
测试不带密码登录mysql,发现还是能够登陆上,但显示数据库时只能看到两个数据库了,说明重启之后跳过密码验证已经被取消了。
-
我这地方重启数据库之后之所以不带密码任然能够登录是因为我的数据库里存在设无须口令的账户。以上是百度经验的方法,亲测没能成功,原因如下:在任务管理器中结束mysqld.exe进程或在服务中停止mysql的服务,然后在一个命令cmd命令行中执行如下命令:mysqld --skip-grant-tables此时,任务管理器中自动启动了一个安全模式的mysqld.exe进程,但是服务中的mysql服务还是停止的,修改完密码后,在服务中启动mysql服务则会报错(因为任务管理器中已经有一个mysqld.exe进程了)这时候只能在任务管理其中将安全模式的mysqld.exe进程结束掉,再在服务中启动mysql服务则启动成功。但是,当登录mysql数据库时,发现修改的新密码并未生效,还是原来的密码。故这种方法不可行,也许是我操作过程不正确,反正我用这种方式没能成功。如果想成功修改请参阅我的博客《mysql数据库忘记密码时如何修改(二)》。