일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 도커 엔진
- 시작하세요 도커 & 쿠버네티스
- java network
- java socket
- 인프런
- filewriter filereader
- 스레드 제어와 생명 주기
- 알고리즘
- 쓰레드
- Java IO
- 자료구조
- java
- 도커
- 스레드
- 자바 io 보조스트림
- 쿠버네티스
- 컨테이너
- LIST
- Docker
- Thread
- 리스트
- 멀티 쓰레드
- 자바
- Collection
- 동시성
- container
- 자바 입출력 스트림
- 김영한
- Kubernetes
- 실전 자바 고급 1편
- Today
- Total
쌩로그
spring.datasource.url/username/password 본문
내가 성장하는 것이 다른 사람에게 좋은 영향을 줄 수 있다.
그래서 나는 잘 되야만 한다.
나는 진짜 ㄹㅇ 조만간 잘 될 사람이다.
어차피 잘 될 것이고, 지금도 잘 된 사람이다..
요즘 폭풍성장 중이다.
어쨋든간에 나는 어잘될사다.
목차
- 개요
- 본론
2-1. 설정할 값
2-2. Trouble_Shooting - 요약
- 끝
1. 개요
AWS RDS를 연결하려고 하는데, 감으로 변수를 집어넣다가 삽질을 하게 되었다.
어느 변수에 어떤 값이 들어가야하는지를 정리한 글이다.
거기에 트러블 슈팅 과정도 덤으로..
2. 본론
2-1 . 설정할 값
결론부터 간다.
AWS RDS로 DB 생성포스팅에서 , 되도록 메모를 어딘가에 해놓고 설정들을 진행했으면 좋을 거 같다고 했었다.
spring.datasource
하위에 해줄 설정들이다.

spring:
datasource:
url: jdbc:mysql://${MYSQL_HOST}:${MYSQL_PORT}/${DATA_BASE_NAME}?useSSL=false
username: ${MYSQL_USER_NAME}
password: ${MYSQL_PASSWORD}
driver-class-name: com.mysql.jdbc.Driver
각각의 변수 항목에 정리부터 하면
MYSQL_HOST
는 엔드포인트 주소MYSQL_PORT
는 포트번호DATA_BASE_NAME
은 RDS 생성시의 초기 데이터 베이스 이름MYSQL_USER_NAME
은 마스터 사용자 이름MYSQL_PASSWORD
은 비밀번호
이렇게 매핑해서 넣어주면 된다.
2-2. Trouble_Shooting
나는 서버 배포과정에서 yml에서 변수 값을 못 불러들이는 변수와의 전쟁에서 승리를 거머쥐었다.이번 프로젝트 아니 개발인생 역대급 최대의 난간이었다.
그래서 자신 있게 gradle.yml
에 이캉(사투리 = 표준어 : 이렇게) 넣었다.



이캉 잘~ 넣었다~!

그런데 장첸이 있었다면 한 마디 했을 것이다.
"변수 잘 넣은거 맞니?" 라고..
아마 내 손 모가지가 날아갔을 것이다.
배포서버 로그를 확인해보면,

동그라미 친 usernameusernameusername
내가 원하는 로직이 들어가는지를 확인하기 위해서 넣어놓은 로그인데,
"The last packe sent successfully 어쩌고 저쩌고" 라는 메세지가 나온다.
구글링을 해봤는데,
"패킷이 제대로 안 받아진다"
이유인 즉슨 해당 포트를 인바운드 해주지 않아서 그렇다 하더라.
그래서 RDS에 설정한 보안 규칙을 가봤다.
❗ 참고로 이게 이번 트러블슈팅의 핵심은 아니다.
물론 필요한 부분일 수도 있겠으나, RDS 생성 시 포트를 지정하는데, yml의 DB연결문(링크)에 보면 포트 번호를 애초에 지정해준다.


그냥 보안 규칙 들어가서 설정했다는 의미다포트번호를 보안상 보통 3306에 뭐 숫자를 더 붙이기도 한다는데, 나는 아예 다르게 했다 ^ . ^
이렇게 가려놨지만 내가 RDS 생성시 설정한 포트번호를 인바운드 규칙에 넣었다.
그럼에도 불구하고 뭔가 안 된다....

그냥 이건 내가 mysql ID를 잘못 넣은 것이었다.
이제 제대로 넣었겠지하고 보는데,,,

이렇게 위에 보면, 가린 부분이 'ID'@'IP'
이다.
그리고 메세지에서 Access denied라고 나온다. 그리고 ID 앞에 파란 동그라미 표시해놓은 이상한 달러($) 표시가 나온다.
일단 구글링을 했다.
아래와 같이 주면 된다고 하더라.

그래서 인텔리제이에서 sql 콘솔로 권한을 이래주고 저래주고 요래주고 이렇게 주고 해봤지만,
신택스 에러가 났다...
?????????

?????????
그래서 내가 지인들한테 물어봤던 게 있다..

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ참고로 바로 답은 해주지 않으셨다..답이 올 때 쯤 난 이미 트러블 슈팅을 끝냈다..
프라이빗 IP도 열어줘야한다길레 열어줬다.

이렇게도 설정을 했다만, 여전했다...
뭐지..? 뭐지..? 하다가 배포 서버의 yml설정파일을 확인했다.
application-prod.yml을 보니 아이디에 진짜 이상하게 생각하던 $(딸라) 가 또 붙어있었다.
?????????

?????????
응...? 하고 깃허브 액션시 설정하는 gradle.yml 을 확인했다..

하...
하......
ㅡㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏ!!!!!!!!!~

후..마음을 가다듬고 $(딸라) 를 하나 지웠다...
이제 ($)딸라 가 안 나온다...

그러나. 이게 문제가 아니었다.
그냥 내가 변수 잘 못 넣어...;;;

그래서 다시 결론을 내리면,,
MYSQL_HOST
는 엔드포인트 주소MYSQL_PORT
는 포트번호DATA_BASE_NAME
은 RDS 생성시의 초기 데이터 베이스 이름MYSQL_USER_NAME
은 마스터 사용자 이름MYSQL_PASSWORD
은 비밀번호
이캉 맞춰서 변수에 값을 잘! 단디! 넣어주면 된다!!
3. 요약
- 변수를 이상하게 집어넣어 해맸다는 호소
- 변수를 잘 넣어줘야 한다.
MYSQL_HOST
는 엔드포인트 주소MYSQL_PORT
는 포트번호DATA_BASE_NAME
은 RDS 생성시의 초기 데이터 베이스 이름MYSQL_USER_NAME
은 마스터 사용자 이름MYSQL_PASSWORD
은 비밀번호
이렇게..
4. 끝
-끝-
'TroubleShooting & 고민 > 배포' 카테고리의 다른 글
변수와의 전쟁_export 전성시대 (0) | 2023.06.08 |
---|