Node.js 에서 MySQL 을 사용 하면 connect ECONNREFUSED 127.0.0.1:3306 문제 가 발생 합 니 다.

머리말
최근 에 Node 로 작은 물건 을 쓰 려 면 MySQL 데이터 베 이 스 를 사용 해 야 합 니 다.현재 가장 광범 위 하 게 사용 되 는 것 은 my sql 라 이브 러 리 입 니 다.그리고 지금 ORM 이 이렇게 핫 하 니 차라리 ORM 에 도 올 라 가 보 세 요.마침 저도 공 부 를 못 해서 Sequelize.js 라 는 ORM 라 이브 러 리 를 찾 았 습 니 다.
문제점 을 발견 하 다
Sequelize 문 서 를 보 세 요.so easy,2 분 안에 끝 냅 니 다~

import Sequelize from 'sequelize';
let sequelize = new Sequelize('database', 'username', 'password', {
 host: 'localhost',
 port: 3306,
 dialect: 'mysql',
 pool: {
  max: 5,
  min: 0,
  idle: 10000
 }
});
// ...          
운행 하 다SequelizeConnectionRefusedError: connect ECONNREFUSED 127.0.0.1:3306뭐야,왜 이런 오류 가 생 겼 지?나 는 분명히 localhost 를 설 치 했 는데 왜 127.0.0.1 이 되 었 습 니까?
문 제 를 해결 하 다
예전 에 구 글 에서 많은 사람들 이 이 문 제 를 만 났 다 는 것 을 발 견 했 습 니 다.해결 방법 은 대략 몇 가지 가 있 습 니 다.
     1.당신 가장귀 는 MySQL 을 설치 하지 않 고 도망 갈 수 있 을 것 같 습 니까?빨리 데이터베이스 설치 해!
     2.데이터 베 이 스 를 실 행 했 습 니까?빨리/etc/init.d/mysql 시작
     3.포트 를 잘못 썼 습 니 다.
     4.skip-networking 이 옵션 을 열 었 습 니까?Remove it !
이 를 보고 저 는 반응 을 했 습 니 다.제 데이터 베 이 스 는 원 격 접근 과 관련 이 없 기 때문에 유 닉 스 socket 통신 만 사용 하면 됩 니 다.그래서 skip-networking 을 사용 하여 MySQL 이 지정 한 포트 를 감청 하지 않도록 했 습 니 다.
skip-networking 이 뭔 지 먼저 확인 해 보 세 요.
Do not listen for TCP/IP connections at all. All interaction with mysqld must be made using named pipes or shared memory (on Windows) or Unix socket files (on Unix). This option is highly recommended for systems where only local clients are permitted.
번역 하면:
TCP/IP 연결 을 감청 하지 마 세 요.my sqld 와 의 모든 상호작용 은 이름 파이프 나 공유 메모리(Windows 에서)또는 Unix socket 파일(Unix 에서)을 사용 해 야 합 니 다.로 컬 클 라 이언 트 만 허용 하 는 시스템 에 이 옵션 을 사용 하 는 것 을 강력 히 권장 합 니 다.
근원
그러나 안전성 을 위해 서 나 는 이 선택 을 제거 하고 싶 지 않다.고통 을 참 으 며 ORM 을 사용 하지 않 을 수 밖 에 없 을 까?
문 서 를 보 았 기 때문에 my sql 이 연결 라 이브 러 리 는 socketPath 라 는 속성 으로 유 닉 스 소켓 파일 을 지정 할 수 있 지만 Sequelize.js 에 서 는 관련 속성 을 발견 하지 못 했 습 니 다.
마지막 으로 issue 를 보 낼 수 밖 에 없 었 습 니 다.얼마 지나 지 않 아 dalao 는 dialectOptions 로 my sql 의 속성 을 설정 할 수 있다 고 대답 했다.
다음은 테스트 에 성공 한 코드 입 니 다.

import Sequelize from 'sequelize';
let sequelize = new Sequelize('database', 'username', 'password', {
 host: 'localhost',
 port: 3306,
 dialect: 'mysql',
 dialectOptions: {
  socketPath: '/tmp/mysql.sock' //          
 }
 pool: {
  max: 5,
  min: 0,
  idle: 10000
 }
});
이렇게 쉬 운 데..
총결산
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.

좋은 웹페이지 즐겨찾기