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

Node.js mysql模块创建连接池报访问拒绝及1133授权错误

问题根因
  • 你创建的数据库用户为'johnDoe'@'localhost',该用户仅允许通过环回地址(127.0.0.1)本地访问时匹配权限。但你的连接配置中host字段填写的是192.168.5.11,属于走局域网网卡的TCP连接,MySQL会将该连接的来源识别为服务器配置的主机名myHostname,和已创建的localhost用户规则不匹配,因此触发访问拒绝错误。
  • 执行通配符授权报1133错误的原因是:MySQL 5.7及以上版本默认关闭了GRANT语句自动创建用户的功能,你没有提前创建'johnDoe'@'%'这个用户,直接执行授权语句找不到对应的用户行,就会抛出该错误。
解决方法

二选一即可,优先推荐方案1,配置改动最小且安全风险更低。

方案1:修改连接配置适配现有用户

将连接配置中的host参数从192.168.5.11改为127.0.0.1即可,注意不要填localhost,Node.js的mysql驱动识别到localhost时会优先尝试Unix socket连接,容易出现额外的连接异常。
修改后的配置参考:

var dbConnOptions = {
    host: '127.0.0.1',
    port:  3306, 
    user: 'johnDoe', 
    connectionLimit: 10,
    charset: "utf8mb4",
    database: 'myDatabase', 
    password: 'myPassword',
    multipleStatements: true
};

修改后重启服务即可正常连接。

方案2:创建匹配访问来源的数据库用户

如果你必须使用192.168.5.11作为连接地址,按以下步骤操作:

  1. 登录MySQL命令行,先创建匹配主机名来源的用户:
CREATE USER 'johnDoe'@'myHostname' IDENTIFIED BY 'myPassword';
  1. 给该用户授予对应库的权限:
GRANT ALL PRIVILEGES ON myDatabase.* TO 'johnDoe'@'myHostname';
  1. 执行权限刷新命令让规则立即生效:
FLUSH PRIVILEGES;

如果你确实需要允许任意IP访问该数据库用户,先执行CREATE USER 'johnDoe'@'%' IDENTIFIED BY 'myPassword';创建通配符用户,再执行对应授权语句即可,禁止跳过创建用户的步骤直接授权。不推荐生产环境使用%通配符配置用户来源,存在安全风险。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 01:48:15