[MySQL Error]connect ECONNREFUSED 127.0.0.1:3306 at TCPConnectWrap.afterConnect [as oncomplete]

Seung Hyeon ·2024년 6월 1일
0

Issues

목록 보기
6/6
post-thumbnail

💥 문제 상황

  • 테스트 서버의 DB를 연결하여 로컬 환경에서 개발하고 있다가, DB 구조를 변경해야하는 일이 있어 로컬 서버의 DB와 연결하는 상황에서 위 에러가 발생했다.
  • Nest.js , mariadb , typeorm 이용

시도1

  • 구글링을 해보니 host를 localhost → 127.0.0.1 변경하여 해당 에러를 해결한 경우가 대부분이었다.
  • 하지만 내 프로젝트에서는 해결이 되지 않았다.
 TypeOrmModule.forRoot({
      type: 'mariadb',
      host: '127.0.0.1',
      port: 3306,
      username: 'root',
      password: 'PW',
      database: 'sk2023', 
      synchronize: true, 
 }) 
// 해결되지 않음

시도2

https://oneroomtable.com/entry/NestJS-%EA%B8%B0%EC%B4%88-4-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EC%97%B0%EB%8F%99 참고

  • 그 다음으로 많이 해결된 방법이 Password 속성을 변경하는 것이었다.
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '새로 바꿀 비번';
  • 만약 비밀번호 정책에 맞지 않는다는 에러가 나오면, 아래 명령어를 실행하여 현재 설정된 비밀번호 정책을 확인하자
set global validate_password.policy=LOW;

SHOW VARIABLES LIKE 'validate_password%';


→ valid_password.policy를 LOW로 변경

  • 하지만 내 프로젝트에서도 역시 해결되지 않았다. (ㅎ..)

시도3

  • 그렇다면 MySQL 서버가 닫혀있어서 연결이 안되는 것인가..
  • 그것도 아니었다

→ MySQL 서버가 잘 열려있는 것 확인

→ 3306 포트 잘 열려있는 것 확인

✚ Password 올바른 것 확인
✚ 연결하고자 하는 'sk2023' DB가 Local 서버의 mariadb에 있는 것 확인


시도4

  • Mysql 서버 재시작
mysql.server restart
  • 해결되지 않음

대안

  • 로컬 서버의 DB를 연결하는 방법 대신, 테스트 서버에 있던 기존 DB를 백업하는 방식을 선택했다.
  • 테스트 서버에 백업 날짜_backup 이름의 새로운 DB생성 (DB명은 자유..) → 백업 dump SQL파일을 새 DB에 덮어씌우기

→ 해결


MySQL DB 백업 방법은 아래 포스팅에서 작성했다.
https://velog.io/@snghyun331/MySQL-DB-%EB%B0%B1%EC%97%85-%EB%B0%A9%EB%B2%95

마무리하며..

처음 로컬 환경에서 개발을 시작하려고 너무 당연시하게 빈 로컬 DB를 새로 생성했으나 예상치 못한 에러가 발생했고 결국 에러를 해결하지 못해 테스트 서버의 DB를 백업하여 개발을 진행하게 되었다. 하지만 생각해보니, 새로운 로컬 DB를 생성하기보다는 테스트 또는 운영 서버의 DB를 백업하여 그 데이터를 사용하는 것이 더 효율적인 방법인 것 같다.

profile
안되어도 될 때까지

0개의 댓글

관련 채용 정보