원격 서버에 띄운 MySQL 서버에 접속하기 전 주의사항
- mysql 구성 정보 파일에 bind-address: 127.0.0.1 부분을 주석 처리한다. 또는 0.0.0.0 으로 수정한다.
- mysql 서버에서 각 사용자에 대한 권한 설정
- 방화벽 설정: 특정 IP 에 대해서 3306번 포트에 접근을 허용한다. 인바운드 규칙 설정
- 가비아에 설정한대로 작동하지 않을 경우, ubuntu 서버에서 "sudo ufw " 명령어를 사용해서 직접 규칙을 설정할 수 있다.
참고 ) https://oranthy.tistory.com/585?category=1050152
현재 우분투 서버의 방화벽 정보 확인 방법
- 가비아 관리 콘솔에서 방화벽 규칙을 설정해도 적용되지 않는 것 같아서 알아보니 ubuntu 서버에서 직접 방화벽에 대해 설정하는 방법이 있다는 걸 알게 됐다.
- 그래서 방화벽 설정 정보를 조회하여 8080, 3306, 22 포트를 허용했다.
- 가비아 관리 콘솔에 설정한 내용이 왜 적용되지 않았는지는 정확히 모르겠다.
- sudo ufw status
- 방화벽에 대한 상태 확인
- 비활성 상태인 경우, sudo ufw enable 를 입력해서 활성화시킬 수 있다.
- sudo ufw allow from IP주소 to any port 8080
- 특정 IP 주소에 대해서 8080 포트로의 접속을 허용한다.
- sudo ufw deny from IP주소 to any port 8080
- 특정 IP 주소에 대해서 8080 포트로의 접속을 거부한다.
- sudo ufw delete 3
- 방화벽 설정 목록의 세 번째 행을 지운다.
ubuntu mysql 데이터베이스 접속 오류
- 오류: 로컬에서 실행하면 정상인데 원격에서는 에러가 난다.
- 원인
- 1) 3306 포트에 대한 방화벽 문제
- 2) yml 파일에 대한 실행 환경 구분하기
- yml 파일에서 local 모드로 실행할 때는 데이터베이스 url에 원격 IP 를 넣으면 되지만, 원격에서 dev 모드로 실행할 때에는 url에 localhost를 넣으면 된다. (ubuntu 서버에 mysql을 띄운 것이므로)
- 해결
- 방화벽 설정
- 가비아 관리 콘솔에 설정해둔것 보다 우분투 서버에서 명령어를 통해 직접 저장한 대로 방화벽이 작동했다. (원인을 알 수 없음 ㅠㅠ, 우선 순위가 다른 걸로 보인다. )
- 스프링 부트를 띄우다가 콘솔에 아래 코드가 나온 상태로 잠시 멈춰 있으면 DB 에러라고 볼 수 있다.
- 원격에 DB를 띄웠는데 yml 파일에 설정한 DB 주소 문제였다.
- DB 서버와 Spring 서버가 동일한 원격에 있기 때문에 DB 주소를 localhost 라고 넣어줘야한다.
- 숫자 IP를 넣으면 트래픽이 외부 네트워크를 거치다가 네트워크가 지연될 수 있다.
com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Exception during pool initialization.
com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
'강의 사이트 만들기' 카테고리의 다른 글
ubuntu 서버에서 gradle 버전 수정하기 (1) | 2023.10.15 |
---|---|
Spring 애플리케이션을 원격으로 전송하기 (1) | 2023.10.14 |
원격 서버(ubuntu)에 Java 설치, MySQL 서버 구축 (0) | 2023.09.20 |
Vue.js 3 프로젝트 세팅, VO / Entity / DTO 차이점 (0) | 2023.08.15 |
ERD, querydsl 세팅 (0) | 2023.08.08 |