mysql - 访问远程数据库时连接 ETIMEDOUT 错误,即使端口 3306 已打开
问题描述
这是我第一次使用nodejs。我正在尝试使用对话流构建聊天机器人,并且正在尝试访问托管在服务器上的网站的数据库。但是,它给了我一个 ETIMEDOUT 错误,即使端口对用户“omkar”是开放的。我可以使用用户“omkar”通过设备上的终端访问数据库。遇到此错误的原因可能是什么?这是我的代码:
function connectDataBase(){
const connection=mysql.createConnection({
host:'ip_of_my_database_server',
user:'omkar',
password:'my_password',
database:'database_name'
});
return new Promise((resolve,reject)=>{
connection.connect(function(err) {
if (err) throw err;
console.log("Connected!");
});
resolve(connection);
});}
function queryDataBase(connection){
return new Promise((resolve,reject)=>{
connection.query('SELECT * from auth_user',(error,results,fields)=>{
resolve(results);
});
});}
function handlerRank(agent){
return connectDataBase().then(connection=>{
return queryDataBase(connection).then(result=>{
console.log('Printing');
console.log(result);
agent.add(result[0].first_name);
connection.end();
});
});}
编辑1:
我检查了我的 mysql 数据库是否可以远程访问。外部客户端可以访问端口 3306。此外,用户“omkar”具有查看和更新数据库的适当权限。
我正在使用上面的代码编写的 dialogflow 内联编辑器。
解决方案
如果是远程数据库,我想你需要在远程数据库中 mysql 配置文件的绑定地址中添加你的 ip。在 /etc/mysql/my.cnf 中找到该文件并通过 'service mysqld restart' 重新启动 mysql 服务器
推荐阅读
- machine-learning - 深度学习中的大量虚拟变量
- swift - Swift 添加一个按钮,从使用 foreach 循环的列表中删除行
- reactjs - 从 React 应用程序中的 s3 存储桶下载文件
- javascript - 如何正确地将 onChange 事件传递给 Reactjs 中的多个输入复选框?
- azure - MS Graph API - 列出安全分数不返回任何数据
- android - 当应用程序在后台运行时,Android 能否在不终止整个进程的情况下终止活动?
- c - printf在C中具有多个指针作为参数
- python - 为什么在此示例 python 中将字符串添加为字符?
- powershell - 计算文件中的日期条目。- 电源外壳
- javascript - Array.sort 按对象键/值的字母顺序