簡體   English   中英

Node.js MySQL - 錯誤:連接 ECONNREFUSED

[英]Node.js MySQL - Error: connect ECONNREFUSED

我使用 Node.js 服務器端。 我在本地主機上嘗試了我的代碼,一切正常。 我購買了一台服務器並在其上安裝了 Apache 和 node.js 並在那里測試了我的 Web 應用程序。 我正確地將 MySQL 連接配置從 localhost 更改為服務器配置。

我使用以下配置測試我的 Web 應用程序:

var mysql      = require('mysql');
var mysqlConnection;
function new_mysqlConnection() {
    mysqlConnection = mysql.createConnection({
      host     : 'myurl.at',
      user     : 'myusername',
      database : 'mydatabase',
      password : 'mypassword'
    });
}

我使用以下命令啟動 node.js 服務器:

$ node server.js

當我加載頁面時,它正確顯示,但是當 Node.js 嘗試連接到數據庫時,我總是收到以下錯誤:

Error: connect ECONNREFUSED
    at errnoException (net.js:905:11)
    at Object.afterConnect [as oncomplete] (net.js:896:19)
    --------------------
    at Protocol._enqueue (/var/www/node_modules/mysql/lib/protocol/Protocol.js:135:48)
    at Protocol.handshake (/var/www/node_modules/mysql/lib/protocol/Protocol.js:52:41)
    at Connection.connect (/var/www/node_modules/mysql/lib/Connection.js:119:18)
    at reconnectDb (/var/www/server.js:319:18)
    at app.get.email (/var/www/server.js:109:2)
    at Layer.handle [as handle_request] (/var/www/node_modules/express/lib/router/layer.js:82:5)
    at trim_prefix (/var/www/node_modules/express/lib/router/index.js:302:13)
    at /var/www/node_modules/express/lib/router/index.js:270:7
    at Function.proto.process_params (/var/www/node_modules/express/lib/router/index.js:321:12)
    at next (/var/www/node_modules/express/lib/router/index.js:261:10)

您需要將socket path的值添加到配置對象中:

socketPath: '/var/run/mysqld/mysqld.sock'

在 MAMP 中,您轉到http://localhost:8888/MAMP ,您會發現:

/Applications/MAMP/tmp/mysql/mysql.sock

最后你有:

var connection = mysql.createConnection({
  host     : config.host,
  user     : config.user,
  password : config.pass,
  database : config.db,
  socketPath: '/Applications/MAMP/tmp/mysql/mysql.sock'
});

檢查服務器中的 MySQL 端口。

在 MAMP 中,默認情況下它使用 8889。

將其添加到您的連接配置中。

您的 MySQL 配置應如下所示。

this.pool = mysql.createPool({
  connectionLimit: 10,
  host: 'localhost',
  user: 'root',
  password: 'root',
  database: 'todo',
  port: '8889'
});

檢查您的 xampp 服務器 mysql 是否正在運行

我遇到了同樣的問題,但我通過更改解決了這個問題

host:  'localhost'

host:   '127.0.0.1'

經過兩天的努力,我通過以下代碼修復了它。 (只是給出我的解決方案,您可能還有其他解決方案。)

也請按照以下步驟操作。

  1. 刪除所有 node_modules
  2. 運行“npm audit --force”
  3. 通過“npm install”安裝 npm 包

const sequelize = new Sequelize("test", "root", "root", { host: "127.0.0.1", dialect: "mysql", port: "8889", connectionLimit: 10, socketPath: "/Applications/MAMP/tmp/mysql/mysql.sock" });

注意:我正在使用帶有 graphql (NODEJS) 的 sequelize。

我建議在您的下表中添加端口;

const pool=mysql.createPool({
    host: '127.0.0.1',
    user: 'root',
    database: 'node-complete',
    port: "3307",
    password: 'Aditya2000#'
});

端口號將從 MySql Workbench 的主頁表中獲取,該表應顯示:

本地實例 MySql 根 localhost: 3307 -> 這個 localhost 號必須寫在那里。

在大多數情況下,您的主機應與 MySQL 配置文件中的綁定地址匹配。 如果您的綁定地址是 0.0.0.0 或 127.0.0.1,那么將主機設置為 'localhost' 應該可以工作。 但是如果您的綁定地址是您的實際 IP 地址,那么您應該添加您的 IP 地址。

var sql_con = mysql.createConnection({ 
host: "ip address",// should be the same as bind-address
user: "jeffery",
password: "damnthing",
database: "KOKATOOO"
});

我遇到了同樣的問題,結果 mysql 沒有運行。 確保它正在運行:

$ systemctl status mysqld

如果你看到這個:

● mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: failed (Result: start-limit) since Tue 2020-08-18 12:12:29 CDT; 32min ago
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
  Process: 18668 ExecStart=/usr/sbin/mysqld $MYSQLD_OPTS (code=exited, status=2)
  Process: 18650 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
 Main PID: 18668 (code=exited, status=2)
   Status: "SERVER_BOOTING"

然后服務沒有運行,運行輸入:

$ systemctl start mysqld

我在使用 nginx 的谷歌雲中也有同樣的問題

改變了

 host: 'localhost'

host : 'cloud_instance_private_ip'

可能會幫助一些有同樣問題的人

這可能是因為沒有端口和數據庫。 首先我寫道:主機、用戶、密碼並且沒有數據庫和端口。

在這里您需要指定您的數據庫名稱是什么,您的端口號是什么。 所以總數必須是:1.主機 2.用戶 3.密碼 4.數據庫 5.端口

它對我有用,如果它對你也有用,請嘗試一下。

我也有同樣的問題,但我通過添加找到了解決方案: port:"80" I connect with node.js to the server php mysql using this code: var mysql=require('mysql');`

var connection=mysql.createConnection({
   port:"80",
    host:"localhost",
    user:"root",
    password:""
});

從搜索欄中打開服務。在那里搜索 MySQL80。右鍵單擊它並單擊開始。現在運行代碼。它應該可以工作。大多數情況下,計算機啟動時 SQL 服務處於非活動狀態

遇到過類似的問題,使用相同的配置,可以從本地 -> mysql 服務器連接,但不能作為 cronjob 部署到 k8s 集群。 不知道為什么,但解決方法是在運行應用程序之前添加sleep 10 &&args: ["-c", 'sleep 10 && node index.js']

我有同樣的問題,我通過添加我的端口解決了它

Port: YOUR_PORT

有同樣的問題,我通過添加端口解決了它

我在 PhpMyAdmin 中創建了一個新用戶,用戶名為“user”,密碼為“”。 我將主機設置為“%”,它允許來自任何主機的連接。

使用您在XAMPP控制面板中找到的IP地址作為節點js代碼中的主機

我已經使用了 XAMPP 控制面板中的 IP 地址作為數據庫連接中的主機

這解決了問題並連接到數據庫

我面臨同樣的問題,但我已經這樣做了:

  1. 使用 XAMPP 打開你的 MySQL
  2. 創建將在代碼中提及的數據庫。 (我有一個名為“node js”的數據庫。

通過這樣做,我的代碼可以完美運行。

你可以在這里看到

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM