当我尝试连接到远程服务器上的数据库时出现问题。
我的代码:
const mysql = require('mysql');
const database = mysql.createPool({
host: 'localhost',
user: 'user',
password: 'pass',
database: 'db'
});
database.getConnection(function (err, connection) {
if (!err) {
console.log('Database is connected ...');
} else {
console.log('Error connecting database ...');
}
});
用于代码连接的凭据是伪造的。使用正确的凭据,我在要连接的日期数据库上成功登录了远程服务器上的phpMyAdmin。凭据很好。
当我运行脚本时,返回此错误:view error
此外,当我输入用于与本地数据库连接的凭据时,一切正常。
phpmyadmin与MySQL服务器在同一台计算机上运行,因此它可以使用通用主机名localhost
连接到该服务器。
我猜,从您的问题来看,您的nodejs程序可以在其他计算机上运行(也许是您的个人计算机?)。这需要进行一些特殊用途的设置。
您必须在host:
属性中使用服务器的实际主机名,而不是localhost
。
MySQL登录凭据不仅是用户名/密码。它们是主机/用户名/密码。您可能需要创建一组新的凭据才能进行远程访问,以便您的nodejs程序可以进入。请阅读:https://webmasters.stackexchange.com/questions/2242/how-to-create-separate-users-in-phpmyadmin-each-one-cant-see-others-databases
如果您的MySQL服务器在某个云或托管服务的租用服务器上运行,则可能需要打开防火墙以允许您的计算机连接。如果您使用托管服务,请向其客户支持咨询。在云服务上,您想要打开端口3306。在其文档中查找如何执行此操作。 (这可能是一个繁琐的配置任务。)
最简单的故障排除方法是在自己的计算机上使用某些MyQSL客户端程序(例如MySQL Workbench或HeidiSQL)。当您获得连接时,可以在createPool()
调用中使用相同的凭据。