Mysql和NodeJS无法远程连接到已部署的应用程序

时间:2015-02-26 22:26:56

标签: mysql node.js cpanel remote-access mysql-error-1045

我正在尝试从NodeJS应用程序连接到MySQL数据库(已经部署,而不是在本地主机中),目前它会抛出错误说:

Error: ER_ACCESS_DENIED_ERROR: Access denied for user 'user'@'187.189.130.120' (using password: YES)
    at Handshake.Sequence._packetToError (C:\wamp\Respaldo Linux\Documentos\WebDev\misGastosApp\node_modules\mysql\lib\protocol\sequences\Sequence.js:48:14)
    at Handshake.ErrorPacket (C:\wamp\Respaldo Linux\Documentos\WebDev\misGastosApp\node_modules\mysql\lib\protocol\sequences\Handshake.js:101:18)
    at Protocol._parsePacket (C:\wamp\Respaldo Linux\Documentos\WebDev\misGastosApp\node_modules\mysql\lib\protocol\Protocol.js:271:23)
    at Parser.write (C:\wamp\Respaldo Linux\Documentos\WebDev\misGastosApp\node_modules\mysql\lib\protocol\Parser.js:77:12)
    at Protocol.write (C:\wamp\Respaldo Linux\Documentos\WebDev\misGastosApp\node_modules\mysql\lib\protocol\Protocol.js:39:16)
    at Socket.<anonymous> (C:\wamp\Respaldo Linux\Documentos\WebDev\misGastosApp\node_modules\mysql\lib\Connection.js:82:28)
    at Socket.emit (events.js:95:17)
    at Socket.<anonymous> (_stream_readable.js:748:14)
    at Socket.emit (events.js:92:17)
    at emitReadable_ (_stream_readable.js:410:10)
    --------------------
    at Protocol._enqueue (C:\wamp\Respaldo Linux\Documentos\WebDev\misGastosApp\node_modules\mysql\lib\protocol\Protocol.js:135:48)
    at Protocol.handshake (C:\wamp\Respaldo Linux\Documentos\WebDev\misGastosApp\node_modules\mysql\lib\protocol\Protocol.js:52:41)
    at Connection.connect (C:\wamp\Respaldo Linux\Documentos\WebDev\misGastosApp\node_modules\mysql\lib\Connection.js:109:18)
    at Object.<anonymous> (C:\wamp\Respaldo Linux\Documentos\WebDev\misGastosApp\app.js:87:12)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)

如果我登录我的cpanel帐户,然后将我的公共IP添加到MySQL远程连接,我可以将应用程序与MySQL数据库连接,但我想知道如何在应用程序进入时使其工作生产。我已经读过许多用户为用户授予了所有权限,这些权限已经完成且仍然相同(无法连接)。

我还读到我可以使用通配符授予对远程IP的远程访问权限,但如果我这样做,我需要为墨西哥的所有IP授予访问权限吗?我一直在阅读许多试图完成这种联系的事情。我的主要目标是在制作中,能够将应用程序下载到我的手机(或任何人的手机),然后访问应用程序并连接到MySQL。这是因为我需要不断检查数据是否是新的,然后同步到MySQL。如果允许远程MySQL连接会出现安全问题,我还有一些疑问吗?

注意:这是我的第一个同步和NodeJS-MySQL的应用程序,所以任何建议都非常感谢。

1 个答案:

答案 0 :(得分:2)

这不是NodeJS问题。您尚未授予&#34;用户&#34;从所有主机访问数据库。

http://dev.mysql.com/doc/refman/5.1/en/grant.html

在mysql shell中有这样的东西:

GRANT SELECT ON db.* TO 'user'@'%'

%表示所有主机不仅仅是一个主机