为什么我的Node.js代码在xampp运行mysql时工作,但是当mysql通知程序运行mysql服务器时却没有?

时间:2018-06-01 07:58:47

标签: mysql node.js xampp

我是使用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服务器通知程序正在运行时,它将返回此错误。

代码:'ER_NOT_SUPPORTED_AUTH_MODE',   错误:1251,   sqlMessage:'客户端不支持服务器请求的身份验证协议;考虑升级MySQL客户端',   sqlState:'08004',   致命:真实} “ 我使用mysql网站上的windows安装程序。我正在运行Windows 10,它直接安装到我的计算机的C盘中。

3 个答案:

答案 0 :(得分:0)

可以尝试执行以下命令:

use mysql;
update user set authentication_string=password(''), plugin='mysql_native_password' where user='root';

答案 1 :(得分:0)

我不知道MySQL Notifier是什么,所以我搜索了Google。根据我发现here (www.mysql.com)的文档,MySQL Notifier仅通知您的系统更改和与MySQL服务器的连接。

这意味着这个实用工具不是一个MySQL服务器,你不能像它那样使用它。您需要一个正在运行的MySQL服务器(由xamp启动)。

有许多方法可以在没有xamp的情况下运行MySQL服务器:

无论如何,您的服务器版本与您的mysql Node.js库中的客户端版本不匹配。这两个版本相互协作,但身份验证方法似乎已经改变。

您使用的是哪个版本?你有没有尝试更新它? npm update mysql

最好的解决方案可能在这里:mysqljs GitHub repository安德烈·西多罗夫建议

这个问题上有一个封闭的问题
  

允许使用不安全的身份验证:https://github.com/mysqljs/mysql#connection-options insecureAuth选项。

     

来源:https://github.com/mysqljs/mysql/issues/1574

选项说明:

  
      
  • insecureAuth:允许连接到要求旧(不安全)身份验证方法的MySQL实例。 (默认:false)
  •   
     

https://github.com/mysqljs/mysql#connection-options

您可以尝试将此选项设置为true

var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'root',
  password : '',
  insecureAuth: true
});

只是一点点,“xamp”代表“LinuX Apache MySQL PHP”(所以你使用的是“wamp” - >“Windows Apache MySQL PHP”)。

答案 2 :(得分:0)

如果您正在运行MySQL 8.0,那么您可能面临同样的问题(并且能够使用相同的解决方案解决它)here