• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

배포 환경 DB 연결 질문 있습니다.

24.05.23 15:05 작성 조회수 140

0

안녕하세요. 배포를 하고 있는 중 에러를 만났는데 도저히 이해가 가지 않아서 여쭤봅니다.

[Nest] 1  - 05/23/2024, 2:56:25 PM   ERROR [TypeOrmModule] Unable to connect to the database. Retrying (1)... Error: Access denied for user '유저'@'호스트 서버 IP' (using password: YES)

제가 지금 만난 에러인데요. 현재 배포하고 있는 서버와 DB로 켜놓은 서버가 각각 다른 서버입니다.

데이터베이스 사용자에 당연히 프로젝트에서 연결 해둔 유저를 추가해두었고, 배포하고 있는 서버의 접근도 허용해뒀습니다. 또한,

GRANT ALL PRIVILEGES ON . TO '유저'@'호스트 서버 IP' IDENTIFIED BY '비밀번호';
flush privileges;

이렇게 모든 권한도 주었습니다. 그런데 계속 위의 에러가 발생하는데 이유를 도통 모르겠습니다. 어떻게 접근해야 할까요?

답변 2

·

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.05.23

안녕하세요, 인프런 AI 인턴입니다.

abj13님께서 직면하신 "ERROR [TypeOrmModule] Unable to connect to the database. Retrying..." 관련하여 데이터베이스 접속 문제의 해결 방안에 대해 문의하셨군요. 데이터베이스 연결 문제는 꽤 많은 요소에 의해 발생할 수 있으며, 비밀번호가 올바르게 설정되었는지, 그리고 해당 사용자가 원격 접속 권한을 가지고 있는지 등 여러 가지 설정을 확인해봐야 합니다.

유사한 문제에 대한 해결 방안이 ERROR: Access denied for user ‘root’@‘localhost’ (using password: YES) 질문에서 다루어졌습니다. 여기에는 Access denied for user라는 같은 유형의 에러를 해결하기 위한 여러 가지 단계가 설명되어 있습니다. 해당 답변에서는 비밀번호나 권한 설정 문제 등을 점검해보는 것을 추천하고 있습니다.

제공된 문제 상황과 해결 방식 중 몇 가지는 abj13님의 경우에 유용할 수 있는 정보를 포함하고 있습니다. 특히, 비밀번호 인증 방식 관련 조치나 권한 설정 확인 같은 부분이 도움이 될 수 있겠습니다.

  1. mysql sequelize 설정 관련 오류 - 이 글에서는 mysql sequelize 설정 시 발생하는 비슷한 연결 문제와 관련된 오류를 다루고 있으며, 권한 설정 및 마이그레이션 과정에서의 문제 해결 방법이 설명되어 있습니다.

  2. npx sequelize db:create 오류에 대한 질문입니다 - sequelize를 사용하여 DB를 생성할 때 발생하는 Access denied 오류와 그 해결 방법에 대한 글입니다. 여기에서는 특정 사용자의 비밀번호 인증 방식을 변경하는 SQL 명령어가 제시되어 있는데, 이는 abj13님의 상황에도 참고가 될 수 있습니다.

이 외에도, GRANT ALL PRIVILEGES ON *.* TO '유저'@'호스트 서버 IP' IDENTIFIED BY '비밀번호'; 명령에서 IDENTIFIED BY 구문은 MySQL 8.0 이전 버전에서는 유효하지만, MySQL 8.0 이상에서는 CREATE USER 사용 시만 적용되며 GRANT 문에서는 사용되지 않는 점 주의하시기 바랍니다. MySQL 8.0 이상을 사용하고 계시다면, 사용자 생성과 권한 부여를 별도로 처리해야 합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

AI인턴 말대로 비밀번호는 따로 변경해보세요.

0

호스트서버IP가 백엔드서버를 의미하시는 건가요? 그리고 혹시 방화벽 허용은 해두셨나요?

abj13님의 프로필

abj13

질문자

2024.05.23

  1. 호스트 서버 IP가 백엔드 서버를 의미하는게 맞습니다.

  2. 방화벽 아마 허용되어있을텐데 한번 확인해보겠습니다.

    ++) 추가로 각각의 서비스를 도커 컨테이너로 관리하고 있는데요. 배포 환경에 따라서 게이트웨이 연결 설정을 변경해두려고 .env에 환경에 맞는 게이트웨이 경로를 작성해두었는데, 원하는대로 연결이 변경되지 않는 것 같습니다.

    이 env 파일을 프로젝트 가장 바깥에 작성해두고

        env_file:
          - .env

    도커 컴포즈에 이렇게 작성을 해두었는데요. 이렇게 하는게 아니라 프로젝트 각각에 .env 파일을 작성해줘야 하는건가요? 아니면 전역으로 사용 할 수 있는건가요?

도커 컴포즈를 안 써봐서 모르겠습니다.. ㅠㅠ

비밀번호만 따로 alter 커맨드로 수정해보세요.

abj13님의 프로필

abj13

질문자

2024.05.26

음... 왜인지 모르겠으나 권한을 한번 더 줘보니까 정상적으로 연결이 되기 시작했습니다!

그리고 환경변수 이슈는 브라우저에서 환경변수를 못 읽어서 생겼던 이슈였습니다 ㅎㅎ 공식문서를 보니까 변수 이름의 prefix를 NEXT_PULIC 과 같이 설정해두라고 나와있네용

https://blog.naver.com/abj13/223458020398

관련해서 제 블로그에 정리도 해놨습니다! 감사합니다~

채널톡 아이콘