alter user 'root'@'localhost' identified with mysql_native_password by '123456'; flush privileges;
但修改之后发现还是不行。以下是自行摸索得到的解决步骤:
因为MySQL8.0以上版本使用的密码加密方式发生了改变,使用的是caching_sha2_password,而SQLYog客户端使用的还是mysql_native_password加密方式连接。可以通过查看user表可以知道:
select user,plugin from mysql.user;
alter user 'root'@'localhost' identified with mysql_native_password by 'root'; flush privileges;
select user,plugin,host from mysql.user;
其中,host为%表示,表示的远程登录,并且是除服务器外的其他任何终端;
host为%表示localhost,表示可以在本地登录,即可以在服务器上登陆
而我使用的是windows的SQLYog连接虚拟机的Mysql,使用的root应该是host为%的root。而这个root的plugin还是caching_sha2_password,所以才导致了第二步并没有生效。
mysql> alter user 'root'@'localhost' identified with caching_sha2_password by 'root'; Query OK, 0 rows affected (0.00 sec) mysql> mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
终于连上了!