【问题标题】:How to connect to a database on a remote server如何连接到远程服务器上的数据库
【发布时间】:2020-02-12 08:08:02
【问题描述】:

我有一个服务器 my-website.com,它采用共享的托管计划。我在服务器上创建了一个数据库。从 webadmin,数据库详细信息是:

来自 phpMyAdmin:

服务器:localhost:3306


数据库服务器
服务器:通过 UNIX 套接字的本地主机
服务器类型:Percona 服务器
服务器版本:5.6.39-83.1 - Percona Server (GPL),版本 83.1,修订版 da5a1c2923f
协议版本:10
用户:user@localhost
服务器字符集:UTF-8 Unicode (utf8)

我尝试通过节点连接到它:

const express = require('express')
const mysql = require('mysql')

const PORT = process.env.PORT || 5000

const app = express();
app.use(express.json());

const courses = [];

/** DB **/


app.get('/api/db_connect', function (req, res) {

    var myConStatus = "undef  conn";

    var con = mysql.createConnection({
        host: "191.181.181.81",  // FAKE
        Port: "3306",
        user: "user@localhost",
        database: "user_test_db",
        password: "password123"
    });

    con.connect(function (err) {
        myConStatus = "Connecting to db";
        if (err) {
            myConStatus = "ERR Conn";
            throw err;
        }

        myConStatus = "Success Connection";
    });

    var sql = "CREATE TABLE customers (name VARCHAR(255), address VARCHAR(255))";
    con.query(sql, function (err, result) {
        myConStatus = "Creating table";

        if (err) {
            myConStatus = "ERR DB TABLE CREATE";
            throw err;
        }
        myConStatus = "Table created";
    });

    res.send(myConStatus);

});

/** END DB **/

这永远不会成功,也不会创建任何表。

我错过了什么?

【问题讨论】:

    标签: mysql node.js database


    【解决方案1】:

    不确定我是否完全理解,但可以为来自本地进程或远程的连接配置 mySQL。如果您尝试远程连接到配置为本地的服务器,它将无法连接。

    你没有说你是否有连接错误。

    您可以为standard TCP/IPssh TCP/IP 配置连接,而不是local socket/pipe - 也许您已经这样做了。

    见这里https://www.percona.com/doc/percona-xtrabackup/LATEST/howtos/enabling_tcp.html 和这句话

    “大多数Linux发行版默认不启用接受 来自 MySQL 或 Percona 服务器外部的 TCP/IP 连接 包”

    如果这不合时宜 - 请评论我,我会删除。

    【讨论】:

    • 感谢@bcperth 的回复。该数据库运行在与该运行节点不同的服务器上。我在 Heroku 上调用我的节点 javascript 代码,这反过来又在提到的 IP 上调用数据库。
    • 好的,您是否已为远程连接配置了服务器?您需要显式配置远程连接。
    • 好的,您是否已为远程连接配置了 mySQL 服务器?您需要明确配置远程连接,否则它不会接受。
    • 您需要检查共享主机是否允许远程连接,如果允许,则必须使用隧道完成。 SQLyog程序给出了一个使用隧道的php文件示例,如果您下载并安装试用版,在安装文件夹中您可以找到该文件,您只需更改db_name、密码和主机名即可远程连接到您的数据库。希望这会有所帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-07
    • 2014-03-17
    • 2018-05-28
    • 1970-01-01
    • 1970-01-01
    • 2018-10-08
    • 1970-01-01
    相关资源
    最近更新 更多