我不熟悉使用node. js和mysql,我有一个简单的脚本,它使用node将我登录到mysql服务器。
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : ''
});
connection.connect(function(err)
{
if (!err)
console.log('Connected');
else
console.log('Error connection');
console.log(err);
});
当我的xampp mysql服务器运行时,它会返回连接,但是当xampp关闭并且mysql服务器通知程序正在运行时,它会返回此错误。
"code:'ER_NOT_SUPPORTED_AUTH_MODE', errno:1251,sqlMessage:'Client不支持服务器请求的身份验证协议;考虑升级MySQL client',sqlState:'08004',fatal:true}"我使用了mysql站点上的windows安装程序。我正在运行windows 10,它直接安装到我计算机的C驱动器中。
可以通过执行以下命令进行尝试吗:
use mysql;
update user set authentication_string=password(''), plugin='mysql_native_password' where user='root';
我不知道什么是MySQL通知程序,所以我在谷歌上搜索。根据我在这里找到的留档(www.mysql.com),MySQL通知程序只通知您系统上的更改和与MySQL服务器的连接。
这意味着这个实用工具不是MySQL服务器,你不能像以前那样使用它。您需要一个正在运行的MySQL服务器(由xamp启动)。
有很多方法可以在没有xamp的情况下运行MySQL服务器:
无论如何,您的服务器版本与您的客户端版本不匹配,这是您的mysql
Node. js库。这两个版本相互配合,但身份验证方法似乎发生了变化。
你使用哪个版本的?你尝试更新它了吗?npm更新mysql
最好的解决方案可能在这里:在mysqljs
GitHub存储库中有一个关于这个主题的已结束问题,Andrey Sidorov建议
允许使用不安全的auth:https://github.com/mysqljs/mysql#connection-options不安全的auth
选项。
来源:https://github.com/mysqljs/mysql/issues/1574
选项说明:
https://github.com/mysqljs/mysql#connection-options
您可以尝试将此选项设置为true
:
var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : '',
insecureAuth: true
});
只是一件小事,“xamp”代表“LinuX Apache MySQLPHP”(所以你使用的是“wamp”-
如果您正在运行MySQL 8.0,那么您可能面临此处描述的相同问题(并且能够使用相同的解决方案解决它)。