这是一个版本问题 我用koa2和mysql2链接就没有问题 不知道这个老项目运行为啥有这个问题
解决方案
打开mysql运行这个两个命令:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123321';
FLUSH PRIVILEGES;
须知(给小白看的!)
上面的密码是你的密码
不能cmd运行 要用mysql运行
我这里没有配置环境变量 我直接用的mysql自带的命令行
具体原因是
我在2024年运行老版本的koa2项目可能是那个年代的项目不兼容当代的密码
导致这个错误的原因是,那个年代,的mysql模块并未完全支持MySQL 8的“caching_sha2_password”加密方式,而“caching_sha2_password”在MySQL 8中是默认的加密方式。因此,下面的方式命令是默认已经使用了“caching_sha2_password”加密方式,该账号、密码无法在mysql模块中使用。
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
这句话是用于 MySQL 数据库的 SQL 语句,用来修改数据库用户 ‘root’@‘localhost’ 的身份验证方式和密码。
具体解释如下:
ALTER USER
: 这是一个 SQL 命令,用于修改数据库用户的属性。'root'@'localhost'
: 这是要修改的用户的标识符。在这里,‘root’ 是用户名,‘localhost’ 是指该用户只能从本地连接到数据库。IDENTIFIED WITH mysql_native_password
: 这是指定用户身份验证方式的部分。mysql_native_password
是 MySQL 的一种身份验证插件,用于验证密码。BY '123456'
: 这是指定用户的新密码。在这个例子中,密码被设置为 ‘123456’。
因此,整个语句的意思是将用户 ‘root’@‘localhost’ 的身份验证方式修改为 mysql_native_password
,并设置密码为 ‘123456’。
FLUSH PRIVILEGES;
是 MySQL 数据库管理命令之一,用于重新加载授权表,使修改的用户权限生效,或者重新加载授权表中的内容。
当你对用户进行了修改、创建或删除,并且想要使这些更改立即生效时,就可以使用 FLUSH PRIVILEGES;
命令。这样做可以确保 MySQL 重新读取授权表,以便立即应用对用户权限的任何更改。