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

Windows10下Deno连接MySQL8开机后权限拒绝问题求助

解决Deno连接MySQL 8重启后权限拒绝问题

问题复现

Windows 10中使用Deno的https://deno.land/x/mysql@v2.12.1/mod.ts模块连接MySQL 8,重启系统后首次连接报错:

Uncaught (in worker "") (in promise) Error: Access denied for user 'root'@'localhost' (using password: YES) throw new Error(error.message);

使用MySQL Workbench连接一次后,Deno即可正常连接,直到下次重启。

解决方案

1. 替换连接地址为127.0.0.1

修改Deno的数据库连接配置,将host: 'localhost'改为host: '127.0.0.1',强制使用TCP/IP协议连接而非本地socket:

import { Client } from "https://deno.land/x/mysql@v2.12.1/mod.ts";

const client = await new Client().connect({
  hostname: "127.0.0.1", // 替换原localhost
  username: "root",
  password: "你的密码",
  db: "你的数据库名",
});

2. 修改MySQL用户认证插件

MySQL 8默认使用caching_sha2_password认证,部分客户端兼容性不佳。将root用户的认证方式改为mysql_native_password:

  1. 打开MySQL命令行(或通过Workbench进入SQL编辑器)
  2. 执行以下SQL命令:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的root密码';
FLUSH PRIVILEGES;
  1. 重启MySQL服务

3. 确保MySQL启动时监听TCP/IP

检查MySQL配置文件my.ini(通常位于C:\ProgramData\MySQL\MySQL Server 8.0\目录),在[mysqld]节点下添加或确认以下配置:

bind-address = 127.0.0.1
port = 3306

保存后重启MySQL服务,确保服务启动时正常监听TCP/IP端口。

原因分析

重启后MySQL默认可能未初始化TCP/IP监听,或caching_sha2_password认证与Deno的mysql模块存在兼容性问题。Workbench连接时会触发MySQL加载TCP/IP监听或临时适配认证方式,而修改上述配置可永久解决该触发依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 05:48:11