无法使用主目录中的.my.cnf从Node.js客户端连接到MySql

时间:2018-09-10 05:47:10

标签: mysql node.js

我的主目录中的 .my.cnf文件中有以下内容。实际上,对于其他数据库,我也会有更多带有“ client”后缀的条目。但是,到目前为止,要测试,我有一个简单的.my.cnf文件,如下所示:

   [client]
   database=db1
   user=user1 
   password=user123
   host=localhost

在我的Nodejs程序中,我使用以下连接参数:

var dbConn  = { 
    user: 'user1',
    database: 'db1'
};

我希望它能够连接,因为密码在.my.cnf中。它没有,给出以下错误:

 code: 'ER_ACCESS_DENIED_ERROR',
 errno: 1045,
 sqlMessage: 'Access denied for user \'user1\'@\'localhost\' (using password: NO)',
  sqlState: '28000',

如果我将密码放入连接对象dbConn中,它将起作用。如果我在未指定密码的情况下运行mysql命令行,则可以使用.my.cnf文件中的密码进行连接。

1 个答案:

答案 0 :(得分:2)

等等。您只是单独编写了.cnf文件。这行不通。 NodeJS不会自动将其拾取。您需要将其与mysql连接器一起使用。例如:

var ini = require('node-ini');
var mysql= require('mysql');

var config = ini.parseSync('/path/to/your/.my.cnf');

mysql.createPool({
                user: config.user,
                password: config.password,
                database: 'db1'
});
  1. 来源:https://github.com/mysqljs/mysql/issues/1676#issuecomment-289247509
  2. 节点mysql-https://www.npmjs.com/package/mysql