application.properties에 aws에서 생성한 rds(mariadb) 엔드포인트 주소와 이름, 비번을 적어 권한을 설정하고
git에 push 한 뒤 서버에 연결했는데 에러가 났다.
nohup.out 파일에서 로그를 보니
java.sql.SQLNonTransientConnectionException: Could not connect to address=(host=엔드포인트)(port=3306)(type=master) : Connect timed out
라고 떠있었다.
인터넷에 찾아보니 java와 mariadb 버전이 안맞거나, 외부에서 mariadb에 접속할 수 있는 권한이 없거나 등등 여러가지 원인이 있었다.
나의 경우 rds 보안 그룹 규칙에 0.0.0.0/0 인바운드 규칙을 추가한 뒤 재배포 하니 잘 동작했다.
(재배포 안하면 적용안됨!!)
aws에서 rds에 들어간다.
rds - 데이터베이스 - 생성된 rds 클릭 후 밑으로 내리면 보안 그룹 규칙이 보인다.

여기서 보안 그룹을 하나 클릭하면 rds 생성시 만들었던 보안 그룹으로 이동한다.

보안그룹 id를 누른다.
그리고 인바운드 규칙 편집을 누르고 아래와 같이 설정했다.

해결.
위 방법 외에도 일단 sql 오류가 발생하면 db가 제대로 연결되었는지를 먼저 확인해야한다.
따라서 우선 application.properties에 제대로된 주소를 적었는지 확인한다.
엔드포인트를 잘못적었거나 포트를 잘못 적었을 수 있다.
application.properties의 경우 아래처럼 작성한다.
spring.jpa.hibernate.ddl-auto=create-drop
spring.datasource.driverClassName=org.mariadb.jdbc.Driver
spring.datasource.url=jdbc:mariadb://{엔드포인트}:{포트번호}/{데이터베이스 이름}
spring.datasource.username=이름
spring.datasource.password=비번
엔드포인트와 포트번호를 확인하는 방법은 아래와 같다.
aws에서 rds - 데이터베이스 에 들어가면 생성한 rds가 나타난다.

여기서 db 식별자를 누르면 아래처럼 엔드포인트와 포트를 확인할 수 있다.

'Error' 카테고리의 다른 글
[Spring Boot] @NotNull @NotBlank @NotEmpty 설정했는데 null 이어도 동작할 때 (0) | 2024.07.18 |
---|---|
[Spring Boot] cannot deserialize from Object value (no delegate- or property-based Creator) 에러 해결 (0) | 2024.07.18 |
[Spring Boot] CORS 설정 (0) | 2024.07.17 |
HttpMediaTypeNotSupportedException: Content-Type 'text/plain;charset=UTF-8' is not supported 에러 해결 (0) | 2024.07.16 |
[Python] vs code에서 pyrebase 설치 오류 (0) | 2024.01.13 |