2014-03-04 87 views
0

我在Openshift上创建了一个Node.js应用程序,服务器确实工作。无法使用openshift连接到外部mysql数据库node.js

但是,我想在另一台服务器上连接一个mysql数据库。我已经授予远程mysql访问openshift IP地址的权限。

我不断收到此错误:

Error: ER_ACCESS_DENIED_ERROR: Access denied for user 'myuser'@'ipaddress' (using password: YES) 

这个确切的代码工作在我的本地连接到远程数据库服务器:

var connection = mysql.createConnection({ 
      host  : 'host', 
      port  : 'port', 
      user  : 'user', 
      password : 'pass', 
      database : 'db' 
     }); 

     connection.connect(); 
     var b; 
     console.log(query); 
     connection.query(query, function(err, rows, fields) { 
      if (err) throw err; 
      b = rows; 
      console.log(b); 
      console.log(rows); 
      result(b); 
     }); 

我希望得到一些帮助!

+0

你可以使用'mysql'直接从齿轮手动连接到你的外部数据库吗? – niharvey

+0

我该如何测试? – user3380319

+0

你可以使用'rhc ssh 'ssh进入你的设备,并运行'mysql',并用适当的选项连接到远程数据库 – niharvey

回答

0

我会建议你ssh到你OPenShift齿轮,然后尝试远程登录你的MySQL实例

telnet host port 

的主机和端口。如果您无法连接,那么你实际上没有暴露你的MySQL实例,以便您的OPenShift上的node.js应用程序可以看到它。

就像一个侧面说明一样,将数据库暴露给外部世界是非常危险的。有什么理由不能在OpenShift上使用MySQL实例吗?

+0

我知道它有安全问题,但是测试目的。 通过ssh,它给了我访问拒绝openshift齿轮。但是我可以从我的本地主机服务器连接到远程数据库。这是我无法弄清楚的。 – user3380319

0

OpenShift Online不会为您的应用程序提供静态IP地址,因此基于IP的外部白名单可能不适用于授予远程访问权限(从OpenShift托管的实例到外部数据库)。

是否有可能将您的openshift齿轮的域名添加到您的外部MySQL数据库的连接白名单?