【问题标题】:node-mysql won't connect with passwordnode-mysql 无法使用密码连接
【发布时间】:2014-04-07 15:20:20
【问题描述】:

我正在尝试使用 node-mysql 连接到本地 MySQL 服务器,但收效甚微。

每次我尝试连接时,都会收到 ER_ACCESS_DENIED_ERROR。我已经验证我可以使用命令行和下面的凭据连接到 MySQL 服务器,该服务器正在运行,并且端口是正确的。

我的代码如下:

var mysql = require('mysql');

var dbConnection = mysql.createConnection( {
        user: 'node_user',
        password: 'password',
        database: 'sample_db',
        host: 'localhost',
        port: 3306
        } );

dbConnection.connect(function(err) {
        if(err) {
                console.log('Can\'t connect');
                console.dir(err);
        } else {
                console.log('Connection success.');
                dbConnection.end();
        }
});

我确信我做的事情很明显是错误的,但我早上的大部分时间都在盯着它看,我看不出有什么问题。

我得到的唯一线索是,如果我将用户密码设置为空白(在数据库和代码中),那么它会非常愉快地连接。

非常感谢任何建议。

【问题讨论】:

  • 我会在数据库中检查授予该用户和 IP 地址的权限。
  • 我已授予用户对 *.* 的所有权限,并从 % 授予登录权限,这应该使其能够从所有 IP 地址访问。除非我将密码设为空,否则它仍然无法连接,在这种情况下它可以正常连接。
  • 您是否创建了用户和密码并授予他们访问权限?我通常会。我不使用root密码。

标签: mysql node.js node-mysql


【解决方案1】:

database: sample_db拿出来有用吗?连接后你可以做dbConnection.query('use sample_db');。我想知道它是否不起作用,因为这些是或不是根权限,并且在用户不存在的特定数据库上。

您不需要包含端口,因为它默认为 3306。

【讨论】:

  • "您不需要包含端口,因为它默认为 3306。" - 包含它并没有错,这不是连接失败的原因。
  • @Funkodebat 不幸的是没有 - 取出数据库不允许它连接。
  • @duffymo 我会说冗余代码是错误的。你可以有一堆代码,上面写着if ( true ),这没有错,但不需要。我没有说这是原因,但没有必要。 @comish 如果您可以将密码设为空并仍然连接,这听起来像是一个用户问题。你的问题在代码中不存在,在mysql中存在,尝试重新创建用户。
  • @Funkodebat - 谢谢,我认为这与我的节点或笔记本电脑上的 MySQL 安装有关。如果我在我的一个 AWS linux 机器上运行相同的代码,那么它会成功连接,但在我的本地 Mac 上,我会收到拒绝访问错误。怀疑可能是时候在笔记本电脑上重新安装 MySQL 了。
  • @Funkodebat - 抱歉,添加端口与“一堆代码”不同。它可以说是更好的文档,可以让开发人员清楚地知道正在使用默认端口。而且,正如您所指出的,该评论既没有增加任何价值,也没有解决问题。
【解决方案2】:

本教程看起来不像您的代码:

http://markshust.com/2013/11/07/creating-nodejs-server-client-socket-io-mysql

连接在哪里?

试试他的方法,看看能不能解决你的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-18
    • 2021-01-21
    • 2016-07-02
    • 1970-01-01
    • 1970-01-01
    • 2012-09-19
    • 2012-04-26
    • 1970-01-01
    相关资源
    最近更新 更多