无法建立从工作台到 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 后端(服务器到服务器)

无法从 nodejs/python 客户端连接到 grpc

NodeJS - MySQL 服务器在一段时间后无法工作

无法在 Nodejs 中连接本地 PostgreSQL 数据库

如何使用 Node JS 或命令行将图像从服务器复制到本地