我是使用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盘中。
答案 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
选项。
选项说明:
- insecureAuth:允许连接到要求旧(不安全)身份验证方法的MySQL实例。 (默认:false)
您可以尝试将此选项设置为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。