2020-10-08

今天是被MySQL8.17 和Navicat12 折磨

今天想搭个后台,在启动Navicat的时候突然连接不上报1045

接着就去doc 手动打开数据库,用密码进入看看,发现还是报1045,进不去,我以为是我密码记错了,就开始了重置密码的道路,一错再错。

MySQL8.17 重置密码

  1. 到MySQL安装目录,找到my.min文件,打开搜索sqld,在[mysqld] 后面加上skip-grant-tables,然后找到shared-memory去掉前面的注释。(这里相当于关掉的密码通道,不需要密码就可以进入MySQL)
  2. 管理员方式打开cmd,net stop MySQL,之后在net start MySQL.(意思是重启一下MySQL)
  3. 输入  mysql -u root -p    回车   不用输入密码,直接回车就可以进入.
  4. mysql>use mysql; (输入use mysql 回车)2020-10-08
  5. 查看user表;输入  select user,host,authentication_string from mysql.user; (MySQL8.17 的密码字段不是password,而是authentication_string)2020-10-08
  6. 如果root 对应的host 是localhost,那就大家欢喜,证明root有权限访问本地数据库。(我之前的不是localhost,所以即使密码改了,也一样无法连接数据库,报1045)
  7. 如果不是localhost,还能怎么办,改呗。语句 : update user set host='localhost' where user='root';  如果root有多个就+and host='对应你自己的host列数据';
  8. 然后先更改root的密码为空,update user set authentication_string='' where user='root' and host='localhost';
  9. 退出 quit;之后关掉My'SQL : net stop MySQL  ;关掉cmd窗口
  10. 回去MySQL刚刚更改的文件my.min,把skip-grant-tables注释掉,因为你已经有密码了,密码就是空
  11. 管理员打开cmd,打开My'SQL:net start MySQL
  12. mysql -u root -p  回车  不需要输密码,密码为空,直接回车,进入mysql
  13. 然后修改你想要的密码: ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘新密码’; (密码规则:要有大小写字母、特殊字符、数字,首位最好是字母,为什么要这样呢,因为MySQL8.17对爱情的加密方式就是这样,或者你可以改变你自己的加密方式,这又是另外的坑了)
  14. 可以出坑了,退出就可以去navicat连接mysql了