nodejs中的远程mysql数据库连接

时间:2017-08-30 10:40:55

标签: php mysql node.js database

我想连接另一台服务器数据库。例如代码在abc服务器中,我想要另一台服务器的数据库,这是xyz服务器。我已经做了。但是得到错误

  

错误:ER_BAD_DB_ERROR:未知数据库'cp'

我的数据库为 CP

要交互的服务器代码是

var db_config={
  "domain" : "http://****/",
  "hostname" : "****",
  "port"     :  3306,
  "user" : "*****",
  "password" : "****",
  "database" : "cp"
}

    var connection=mysql.createConnection(db_config);
    connection.connect(function(err,s){
      if (err){
        console.log("Error"+err);
      }
      else{
        console.log("db connected");
      }
    });

当我删除数据库并且凭据正确时,我可以与服务器连接。如果我使用 information_schema 作为数据库名称,数据库也正在正确连接。但当我使用其他数据库时,我仍然面临错误

  

错误:ER_BAD_DB_ERROR:未知数据库'cp'

我已经在特定服务器中进行了远程访问设置并检查了php代码,它的工作正常。

请帮忙完成这项艰巨的任务。

1 个答案:

答案 0 :(得分:1)

我认为您的授权声明指定不正确(如果它与您在上面的评论中显示的完全一样)。

应该是:

GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;

但是,这些都是非常普遍的特权。我建议将其限制在特定的数据库中:

GRANT INSERT, UPDATE, SELECT, DELETE  ON <database>.* TO 'USERNAME'@'%'; 

设置数据库后,普通用户不需要创建或修改表或授予其他用户访问权限。

另外,正如您所看到的,我没有在grant命令中指定密码。这应该在CREATE USER命令中指定,因为在某些情况下,GRANT可能会记录在服务器日志中或客户端历史文件中,这意味着任何对该信息具有读取权限的人都可以读取明文密码。