Node.js MySQL - 오류: connect ECONFUSED
Node.js 서버 측을 사용합니다.로컬 호스트에서 내 코드를 시도해 봤는데 모든 것이 잘 작동합니다.서버를 구입하여 Apache와 node.js를 설치하고 거기서 웹 애플리케이션을 테스트했습니다.MySQL 연결 구성을 localhost에서 서버 구성으로 올바르게 변경했습니다.
다음 구성을 사용하여 웹 응용 프로그램을 테스트합니다.
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'
});
저도 같은 문제를 겪고 있었는데 변경해서 해결했습니다.
host: 'localhost'
로.
host: '127.0.0.1'
서버에서 MySQL 포트를 확인합니다.
MAMP에서는 기본적으로 8889를 사용합니다.
연결 구성에 추가합니다.
MySQL 구성은 다음과 같아야 합니다.
this.pool = mysql.createPool({
connectionLimit: 10,
host: 'localhost',
user: 'root',
password: 'root',
database: 'todo',
port: '8889'
});
xampp 서버 mysql이 실행 중인지 확인합니다.
이틀간의 고생 끝에 다음 코드로 고칩니다. (제 해결책을 제시하면 다른 해결책도 있을 수 있습니다.)
다음 단계도 수행합니다.
- 모든 node_modules 삭제
- "npm audit --force" 실행
- "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)로 sufficialize를 사용하고 있습니다.
및 .express MySQL은 MySQL과 동일합니다.
는 "MySQL"입니다.3306
.
let defaultPORT = 3306;
var express = require('express');
var app = express();
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'localhost',
user : 'yourMYSQLUser',
password : 'yourMYSQLPassword'
});
connection.connect();
connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
if (error) throw error;
console.log('The solution is: ', results[0].solution);
});
var server = app.listen( defaultPORT, function() {
console.log( defaultPORT)
});
아래 표에 포트를 추가하는 것이 좋습니다.
const pool=mysql.createPool({
host: '127.0.0.1',
user: 'root',
database: 'node-complete',
port: "3307",
password: 'Aditya2000#'
});
포트 번호는 MySql Workbench의 홈 페이지 표에서 가져와야 합니다. 여기에는 다음이 표시되어야 합니다.
로컬 인스턴스 MySql 루트 localhost: 3307 -> 이 로컬 호스트 번호는 여기에 기록해야 합니다.
대부분의 경우 호스트는 MySQL 구성 파일의 bind-address와 일치해야 합니다.bind-address가 0.0.0 또는 127.0.0.1이면 host를 'localhost'로 설정할 수 있지만 bind-address가 실제 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
저 같은 경우는 XAMPP를 다운받아서 제 사용자 이름과 비밀번호를 확인해봤더니 드디어 작동했습니다.
XAMPP > mySQL connected > phpmyadmin > user accounts
계정 세부 정보를 확인합니다!
이게 도움이 되길 바랍니다.
나도 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=message";'
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
동일한 문제가 있었고 포트를 추가하여 해결했습니다.
PphpMyAdmin에서 사용자 이름은 "user", 암호는 ""로 새 사용자를 만들었습니다.호스트를 "%"(으)로 설정하여 모든 호스트에서 연결할 수 있습니다.
XAMPP 제어판에 있는 IP 주소를 노드 js 코드의 호스트로 사용합니다.
XAMPP 제어판의 IP 주소를 데이터베이스 연결의 호스트로 사용했습니다.
이것은 문제를 해결했고 데이터베이스에 연결되었습니다.
아마도 누군가에게 도움이 될 것입니다. 제 경우 이 문제가 발생했을 때 제가 스트래피 앱을 사용하고 있을 때 데이터베이스를 만들지 않았다는 것을 깨달았기 때문에 Mamp를 사용하여 php를 사용하고 있으며 config 폴더에서 admin이 db를 생성하고 database.js를 업데이트하여 현재 정상적으로 작동하고 있습니다.
제 경우에는 로컬에서 작동했지만 지금은 배포되었습니다.문제는 환경 변수를 업데이트하지 않았다는 것입니다.
Re: localhost vs 127.0.0.1에 대한 질문 (평판이 부족하여 코멘트를 추가할 수 없습니다 :-( ) - https://stackoverflow.com/a/53533120/1804408
저도 같은 문제를 겪었습니다.host: "localhost"
그리고 그것을 사용하여 고쳤습니다."127.0.0.1"
.
는 오가발생습니다했라는 있었습니다.Error: connect ECONNREFUSED ::1:3306
저는 결국 그것이 IPv6 로컬 주소를 보고하고 있다는 것을 깨달았습니다.MySQL 사용자를 @'%'와 @'localhost'로 모두 정의했지만 MySQL은 IPv6 로컬 주소를 좋아하지 않은 것 같습니다. MySQL 설정과 관련이 있을 수 있습니다.
저는 같은 문제에 직면해 있지만, 그것을 해왔습니다.
- XAMPP를 사용하여 MySQL 켜기
- 코드에 언급할 데이터베이스를 만듭니다.(데이터베이스 이름이 붙은 '노드 js'가 있습니다.
이것들을 함으로써, 제 코드는 완벽하게 작동합니다.
언급URL : https://stackoverflow.com/questions/30266221/node-js-mysql-error-connect-econnrefused
'programing' 카테고리의 다른 글
Sinon 오류 이미 래핑된 함수를 래핑하려고 했습니다. (0) | 2023.09.04 |
---|---|
멀티스레딩 대신 노드 JS 파악 (0) | 2023.09.04 |
XML 파일을 통해 TextView 굵은 글씨로 표시하시겠습니까? (0) | 2023.09.04 |
MariaDB to Zarr Array, 어떻게 해야 하나요? (0) | 2023.09.04 |
변수에 필요한/변수로 변환 (0) | 2023.09.04 |