Mysql 并且 NodeJS 无法远程连接到已部署的应用程序
Mysql and NodeJS can't connect remotely to deployed app
我正在尝试从 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 帐户,然后将我的 public IP 添加到 MySQL 远程连接,我可以将应用程序与 MySQL 数据库连接,但我想要知道我怎样才能让它在应用程序投入生产时工作。我已经读到许多用户授予用户所有权限,这已经完成并且仍然相同(无法连接)。
我还了解到我可以使用通配符授予对 IP 的远程访问权限,但如果我这样做,我将需要授予对墨西哥所有 IP 的访问权限吗?我一直在阅读许多试图实现这种联系的东西。我的主要目标是在生产环境中,能够将应用程序下载到我的 phone(或任何人的 phone),然后访问该应用程序并连接到 MySQL。这是因为我需要不断检查数据是否是新的,然后同步到MySQL。我也怀疑允许远程 MySQL 连接是否会成为安全问题?
注意:这是我的第一个同步和 NodeJS 应用程序-MySQL,非常感谢任何建议。
这不是 NodeJS 问题。您尚未授予 "user" 从所有主机访问数据库的权限。
http://dev.mysql.com/doc/refman/5.1/en/grant.html
mysql shell 中的类似内容:
GRANT SELECT ON db.* TO 'user'@'%'
% 表示所有主机而不是单个主机
我正在尝试从 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 帐户,然后将我的 public IP 添加到 MySQL 远程连接,我可以将应用程序与 MySQL 数据库连接,但我想要知道我怎样才能让它在应用程序投入生产时工作。我已经读到许多用户授予用户所有权限,这已经完成并且仍然相同(无法连接)。
我还了解到我可以使用通配符授予对 IP 的远程访问权限,但如果我这样做,我将需要授予对墨西哥所有 IP 的访问权限吗?我一直在阅读许多试图实现这种联系的东西。我的主要目标是在生产环境中,能够将应用程序下载到我的 phone(或任何人的 phone),然后访问该应用程序并连接到 MySQL。这是因为我需要不断检查数据是否是新的,然后同步到MySQL。我也怀疑允许远程 MySQL 连接是否会成为安全问题?
注意:这是我的第一个同步和 NodeJS 应用程序-MySQL,非常感谢任何建议。
这不是 NodeJS 问题。您尚未授予 "user" 从所有主机访问数据库的权限。
http://dev.mysql.com/doc/refman/5.1/en/grant.html
mysql shell 中的类似内容:
GRANT SELECT ON db.* TO 'user'@'%'
% 表示所有主机而不是单个主机