由于两台设备的mysql数据库的密码不一样,开发时每次连接数据库都需要更改配置文件,所以想修改一下mysql数据库的密码。
mysql 修改密码千万不要直接修改,直接修改的话会出现两种情况:
1,修改成功,无法登录。
2,修改不成功。
应该首先把密码置为空,然后再修改,
update user set authentication_string='' where user='root';
MySQL版本mysql8.0.30.
最开始用的update语句修改的user密码:
update user set authentication_string='*******' where user='root';
修改完之后无法登录。
显示错误:
ERROR 1130 (HY000): Host ‘localhost’ is not allowed to connect to this MySQL server
从此之后无法登录了!我去!研究了一天了!
尝试修改my.ini配置文件跳过密码验证,但是mysql8之后不支持修改文件了。
执行如下命令:
net stop mysql;
mysqld --console --skip-grant-tables --shared-memory;
结果是一直运行的界面。
如果不是说明跳过密码验证失败,如果显示的是如下图提示:
就在mysql的安装包data下面修改这个两个文件的权限,重新运行
mysqld --console --skip-grant-tables --shared-memory;
运行成功之后,此窗口千万不要关闭,重新打开新的cmd 窗口,
mysql -u root 登录成功。
网上有很多说用grant 修改用户的权限的方法,我尝试了都不成功。
最后用alert 重新修改密码:(如果提示修改密码失败,就先把密码置为空然后刷新再修改
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '******';
flush privileges;
修改密码就一直报ERROR 1396 (HY000)。
最终发现应该先置空,刷新之后,在更改密码。
use mysql;
update user set authentication_string=‘’ where user=‘root’;
flush privileges;