You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL连接JS报错ER_NOT_SUPPORTED_AUTH_MODE及ER_HOST_NOT_PRIVILEGED求助

MySQL与JavaScript连接报错解决方案

一、解决ER_NOT_SUPPORTED_AUTH_MODE错误

该错误因MySQL 8.0+默认采用caching_sha2_password认证插件,而你使用的mysql客户端库不支持此认证方式,可通过以下两种方式解决:

方法1:修改MySQL用户认证方式

登录MySQL命令行,执行以下SQL命令:

USE mysql;
-- 替换为你的实际密码,修改root用户的认证方式为兼容旧客户端的mysql_native_password
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的数据库密码';
FLUSH PRIVILEGES;

修改后保持代码中host: 'localhost',重新运行连接代码即可。

方法2:更换支持新认证的客户端库

若不想修改MySQL配置,可替换为mysql2库(支持caching_sha2_password):

  1. 卸载旧库:
npm uninstall mysql
  1. 安装新库:
npm install mysql2
  1. 修改连接代码:
const mysql = require('mysql2');

var mysqlConnection = mysql.createConnection({
    host: 'localhost',
    user:'root',
    password:'你的数据库密码',
    database:'EmployeeDB'
});

mysqlConnection.connect((err) => {
    if (!err)
        console.log('DB Connection Succeded');
    else
        console.log('DB Connection Failed \n Error :'+ JSON.stringify(err, undefined, 2));
});

二、解决ER_HOST_NOT_PRIVILEGED错误

此错误是因为修改主机名后,当前主机(Mistycyrus.bbrouter)未被MySQL授权访问,处理步骤如下:

  1. 登录MySQL命令行,执行授权命令:
-- 允许root用户从Mistycyrus.bbrouter主机访问EmployeeDB库,替换为你的密码
GRANT ALL PRIVILEGES ON EmployeeDB.* TO 'root'@'Mistycyrus.bbrouter' IDENTIFIED BY '你的数据库密码';
-- 若需允许所有主机访问(仅测试环境使用,生产环境禁用)
-- GRANT ALL PRIVILEGES ON EmployeeDB.* TO 'root'@'%' IDENTIFIED BY '你的数据库密码';
FLUSH PRIVILEGES;
  1. 代码中host字段对应设置为Mistycyrus.bbrouter,或保持localhost(本地连接优先使用此值,避免解析问题)。

额外注意事项

  • 确认MySQL服务处于运行状态,可通过系统服务管理工具检查(如Windows服务、Linux的systemctl status mysql)。
  • 确保代码中密码与MySQL用户密码完全一致。
  • 本地连接优先使用localhost,减少主机名解析异常概率。

内容的提问来源于stack exchange,提问作者Arun Khandelwal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 08:05:21