2017-08-30 26 views
1

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

Error: ER_BAD_DB_ERROR: Unknown database '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作为数据库名称也db正在正确连接。但是当我使用其他数据库我仍然面临着误差

Error: ER_BAD_DB_ERROR: Unknown database 'cp'

我已经安装在特定服务器的远程访问和PHP代码检查,其在那里工作的罚款。

请在这忙碌的任务中帮忙。

+0

您是否在远程数据库中为您的用户和IP地址添加了凭据?这听起来像你有凭据连接到MySQL服务器,但不能访问cp数据库。 – grim

+0

确保mysql用户'root'具有远程连接权限。 –

+0

@grim是的,我有权访问MySQL服务器,但不是数据库。已经在远程数据库中添加了凭据。 –

回答

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可能会记录在服务器日志或客户端历史文件中,这意味着任何具有读取该信息读取权限的人都可以读取明文密码。

相关问题