1.打开mysql.exe和mysqld.exe所在的文件夹,复制路径地址(linux下是在/usr/local/mysql/bin)
2.打开cmd命令提示符,进入上一步mysql.exe所在的文件夹。
3.输入命令 mysqld --skip-grant-tables 回车,此时就跳过了mysql的用户验证。注意输入此命令之后命令行就无法操作了,此时可以再打开一个新的命令行。注意:在输入此命令之前先在任务管理器中结束mysqld.exe进程,确保mysql服务器端已结束运行。(linux可在/etc/my.cnf文件在[mysqld]这个条目下加入skip-grant-tables(登录时不使用授权表),保存,重启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';
注意:网上查了一下据说5.7 版本password 字段改成authentication_string password函数还是原来的password函数
mysql> update user set authentication_string=password('123') where user='root';
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 1
然后执行 flush privileges;
10.再次查看账户信息,select user,host,password from user; 可以看到密码已被修改。
11.退出命令行,重启mysql数据库,用新密码尝试登录。