在网上查看了很多资料来修改mysql的root账号密码,但是修改的时候总跟网上的教程里的不一样,不知道是不是因为版本原因。因此将解决办法和不同点都发上来,仅供参考,共同学习。
1. 找到my.ini文件,配置跳过权限表
my.ini文件,一般在隐藏文件夹ProgramData目录下的mysql里
2. 在【mysqld】下配置skip-grant-tables
3. 重启mysql服务
这个方法就多了。可以使用mysql 自带的 MySQL Notifier。或者去windows的服务里面重启。或者在cmd命令行里重启。
方法一:右下角的MySQL Notifier
点击restart即可。
注:如果右下角没有,可以在开始菜单里找一下,开始菜单里没有就是mysql安装的时候没安装了,可以在打开安装程序,安装即可。
方法二:
win+r 运行services.msc
然后找到mysql服务,进行重启
方法三:
cmd命令行内,输入net stop mysql57
停止mysql服务,start启动服务。
如截图一样即停止、启动成功。如果提示 服务名无效,本文结尾处有解决方案。
4. 打开cmd,登录mysql
进入到mysql的bin目录,输入mysql
,即可跳过密码验证登录到mysql,并且所有数据库都可以查看的到。
5. 修改密码
# 修改root账号密码
update mysql.user set authentication_string = password('123456') where user='root';
也可以先use mysql,然后
update user set authentication_string = password(‘123456’) where user=‘root’;
6. 刷新权限
flush privileges;
7. 将配置文件的skip-grant-tables删除,并重启mysql服务
接下来,记录一下遇到过的问题。
1、net stop mysql
输入提示 服务名无效。
原因: 服务名与本机的服务名不一致,这个是在mysql安装的时候配置的。mysql5.7默认服务名为mysql57 。这个可以在windows的服务列表里查看。
只要输入的与服务列表里的一致,就可以正常关闭了。
2、不是在配置文件中跳过的权限表,而是使用的命令。
输入mysqld --skip-grant-tables
回车。
(–skip-grant-tables 的意思是启动 MySQL 服务的时候跳过权限表认证)
注意:这时候,刚刚打开的 cmd 窗口已经不能使用了。重新再 bin 目录下打开一个新的 cmd 窗口进行下面的操作。
此时,新打开的cmd窗口,查询的数据库只有一个,没有mysql库。
原因: 猜测是没有读取到mysql的data文件夹。因为在mysql的配置文件中有配置datadir,但是无权限进入后没有配置data目录 。因此无法读取到其他数据库。因此采用修改配置文件my.ini的方式即可。
3. 修改时提示Unknown column ‘Password’
update user set password=password("123456") where user="root";
mysql> update user set Password=password('123456') where user='root';
ERROR 1054 (42S22): Unknown column 'Password' in 'field list'
这里要更改的是 authentication_string
, 而不是 password
字段。否则就会报错
update user set authentication_string = password ('new-password') where user = 'root';