无法建立从工作台到 nodejs 的本地 mysql 连接
Posted
技术标签:
【中文标题】无法建立从工作台到 nodejs 的本地 mysql 连接【英文标题】:Cant establish local mysql connection from workbench to nodejs 【发布时间】:2019-06-30 01:55:48 【问题描述】:所以我正在尝试从使用 xampp 和使用 mysql 工作台过渡。我启动了一个本地数据库连接,并设法通过工作台在我的本地环境中成功连接到它。但是,在我的 NodeJS 文件中,我试图连接到这个本地数据库实例,但在我的终端中,条件语句失败,说它连接到本地 mysql 实例不成功,我不知道为什么。
本地数据库工作台配置:
用户:root 密码:(不能说是我自己的密码) 端口:3306 主机:本地主机
服务运行截图:
NodeJS 代码
var mysql = require("mysql");
var connection = mysql.createConnection(
host: "localhost",
user: "root",
password: "mydbpasswordishere",
database: "testdb",
port: 3306,
charset: "utf8mb4"
);
connection.connect(err =>
if (!err)
console.log("DB Connection Succeeded");
else
console.log("DB Connection Failed");
);
module.exports = connection;
【问题讨论】:
NodeJS 报错是什么?DB Connection Failed
。我可以通过本地工作台正常连接,但是当我尝试通过 nodejs 连接到它时,检查与本地数据库实例的连接的条件失败。当我登录err
它返回ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client
经过几个小时的环顾后发现必须进入工作台并运行以下查询:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'
正确。您使用的 node.js mysql 驱动程序不支持 MySQL 8 上使用的默认身份验证插件,因此您可以通过切换到旧插件 - mysql_native_password
来解决这个问题。更多详细信息here.
【参考方案1】:
根据您的屏幕截图:您可以互换连接的名称和主机名。 更改您的 nodeJS 代码或在工作台中编辑连接。 它应该可以工作。
【讨论】:
以上是关于无法建立从工作台到 nodejs 的本地 mysql 连接的主要内容,如果未能解决你的问题,请参考以下文章
Nodejs 无法在 ws:// apache 代理服务器上建立连接
将“本地”文件从 nodejs 上传到 rails graphql 后端(服务器到服务器)