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

Ubuntu下Knex.js连接MySQL出现1045访问拒绝错误求助

解决MySQL ER_ACCESS_DENIED_ERROR (1045) 问题

你的错误信息显示连接使用的是root@localhost且未提供密码,但你的Knex配置里明确指定了personal_user,这说明实际发起连接的用户和配置不符,或者配置未生效。按以下步骤排查:

  • 确认Knex配置是否生效
    检查代码中有没有其他地方覆盖了Knex的连接配置,或是误写了连接逻辑(比如硬编码使用root用户发起连接)。可以在导出Knex实例前打印配置,确认使用的是personal_user:

    const knexConfig = {
      client: 'mysql',
      connection: {
        host : 'localhost',
        port : 3306,
        user : 'personal_user',
        password : 'personal_password',
        database : 'database_name'
      }
    };
    console.log('Knex连接配置:', knexConfig.connection); // 打印配置确认
    const knex = require('knex')(knexConfig);
    module.exports = knex;
    
  • 验证personal_user用户的合法性
    你之前修改的是root用户的密码,但连接用的是personal_user,这个用户可能不存在或权限不足:

    1. 登录MySQL(用root用户):
      mysql -u root -p
      
    2. 查看是否存在personal_user@localhost:
      SELECT user, host FROM mysql.user;
      
    3. 如果用户不存在,创建并授权:
      CREATE USER 'personal_user'@'localhost' IDENTIFIED WITH mysql_native_password BY 'personal_password';
      GRANT ALL PRIVILEGES ON database_name.* TO 'personal_user'@'localhost';
      FLUSH PRIVILEGES;
      
    4. 测试直接用personal_user登录:
      mysql -u personal_user -p
      
      输入密码后尝试访问目标数据库:USE database_name;,如果能成功,说明用户权限没问题。
  • 检查密码和连接参数
    确认Knex配置中的password和你设置的personal_user密码完全一致,注意大小写、特殊字符的拼写;同时确认host为localhost(错误提示显示连接的是localhost,无需修改)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 15:30:52