반응형

오랫만에 서버 이전을 하고 DB 타겟을 바꾸고 서비스를 실행하는데 DB 연결이 안되는 문제가 나타났다.

Cannot create PoolableConnectionFactory (Could not connect to address= 
(host=xxx.xxx.xxx.xxx)(port=3306)(type=master) : Connection refused: connect)

당시 로그는 위처럼 찍혔다. Could not get JDBC Connection 어쩌구..DB 커넥션을 맺은 JDBC 객체를 정상적으로 리턴받지 못한 모양이다. 왜지!? 전이랑 똑같이 했는데 왜 안돼!

telnet 목적지IP 포트

회사에서 IF 서비스들을 많이 다뤄서 그런지 내 기계적으로 내 PC에서 텔넷부터 찍어봤다. 오잉..? DB 포트 안열려 있네? 방화벽 문제일까? 서비스가 안올라갔나? 생각했지만, 둘다 잘 올라갔을텐데?.. 생각했다.

먼저 라이트세일 서버 방화벽부터 확인하니 3306 포트가 잘 있다. 혹시 마리아 DB 서비스가 실행중이 아닌건가?

라고 생각했지만..서비스도 정상적으로 Run 되어있었다..

netstat -ntlp | grep 3306

그럼...혹시 마리아 DB 디폴트 포트가 3306이 아니었나? 생각이 들어 찍어봤다. 하지만 역시 3306... 하지만..! 오우 shit 이상한 점을 발견했다.

3306 포트는 열려있는데 source IP가 127.0.0.1로 서버 로컬에서만 접속할 수 있도록 되어있다. 즉..! 이 마리아 DB 서버는 서버에서 직접 접근만 가능하고 외부에서 접속되지 않도록 되어있는 것이었다.

해결 방법 : bind-address 변경

vi /etc/mysql/mariadb.conf.d/50-server.cnf

위 명령어를 입력해 50-server.cnf 파일을 열어주자

내리다보면 bind-address = 127.0.0.1 이라고 되어있는 부분이 있다. 이부분을 바꿔줄 것이다. bind-address는 이 DB에 접속할 수 있는 IP를 의미한다. 지금은 127.0.0.1 즉 localhost IP가 입력되어있으니, 이 서버 자체에서만 접속가능하다.

원격지에서 접속할 수 있도록 전체 대역을 의미하는 0.0.0.0 으로 바꿀 것이다. 뭐!? 전체 공개라고!? 안돼!! 할 수도 있지만, 그건 서버 인스턴스 방화벽 설정에서 막으면 되니 신경쓰지 않아도 된다.

bind-address = 0.0.0.0

자 기존 소스는 #을 붙혀 주석처리해주고 아래에 소스를 추가하자. 혹시 vi 편집기를 사용하지 못하는 분은 구글검색을 추천한다. 위 화면에서 i를 누르면 문자 삽입상태가 된다. 그상태에서 #을 붙힌후 방향키로 아래칸으로가 0.0.0.0 소스를 추가하면 된다.

다 썻으면 ESC를 한번 누르고 그 상태에서 Shift+: 버튼을 눌러주고 wq(write+quit) 입력 후 엔터를 입력하자, 저장하고 끄겠다는거다.

service mysql restart

자 이제 위 명령어를 입력해 DB를 재부팅해주자!

netstat -ntlp | grep 3306

다시 위 명령어를 이용해서 확인해보면 0.0.0.0 전체 IP대역에서 3306 포트 접속이 가능하게끔 변경된 것을 볼 수 있다.

짜잔 다시 telnet을 찍어보니 정상적으로 접속 가능한 것이 확인되었다. 내 PC에서 DB까지 구간은 이제 정상화되었으니 다시 스프링 서비스를 Run 해보면 정상적으로 DB 커넥션 되는 것을 확인할 수 있다.

 

#마리아DB #MYSQL #스프링 #원격 #DB #접속 #연결 #오류 #JDBC #PoolableConnectionFactory #bindaddress

반응형
반응형

 

  과거 포스팅을 보면 EC2 인스턴스를 생성할때 3306포트에 대한 방화벽 설정은 다 해줬음으로 바로 연결을 시도해보자.

1. HeidiSql 을 이용한 원격 접속

 

 

 

  HeidiSql을 실행하고 11시방향에 있는 새 연결 아이콘을 눌러주자!

 

 

  다음으로 좌측 하단 7시방향에 있는 신규 버튼(1)을 눌러주자. 그리고 2번쪽으로 가서 해당 세션의 이름을 정해주자. 3번박스로가서 MySQL (SSH tunnel) 로 유현을 변경해주고 4번 호스트 ip는 127.0.0.1 로 가만히 둔다. 5번 박스에 아까 위에서 root 계정으로 접속을 하자. 6번은 따로 안건드렸다면 AWS EC2에 올라간 포트번호가 3306일테니 그대로 둔다. 따로 바꾼사람만 바꿔주면 된다.

 

 

  자 위에 1번 박스에 있는 SSH터널 탭으로 들어가자 Plink.exe의 위치를 설정해달라는건데 난 없었다. 그래서 밑에보면 plink.exe 내려받기 링크가 있는데 가서 받아오자.

https://www.chiark.greenend.org.uk/~sgtatham/putty/

 

PuTTY: a free SSH and Telnet client

PuTTY: a free SSH and Telnet client Home | FAQ | Feedback | Licence | Updates | Mirrors | Keys | Links | Team Download: Stable · Snapshot | Docs | Changes | Wishlist PuTTY is a free implementation of SSH and Telnet for Windows and Unix platforms, along wi

www.chiark.greenend.org.uk

주소는 이거다 접속하자

 

 

  보면 Download it here 링크가 있다 누르자!

 

 

 

  페이지가 이동했으면 스크롤 중간쯤으로 내리거나 아니면 Ctrl+F를 눌러 plink를 검색하면 plink.exe가 검색되는데 각 아키텍쳐에 맞는 파일을 받아주면 된다.

 

 

 

  다시 여기로 들어와서 2번 박스에 아까 받은 plink.exe경로를 잡아줬으면 3번으로 넘어간다. 3번은 자기 AWS EC2 인스턴스의 탄력적 IP를 입력해주면 된다.

 

  혹시 자기 EC2 서버의 IP가 모르는사람은 EC2 설정 페이지를 가면 볼 수 있다.

 

 

  인스턴스를 클릭하고 저기 IPv4 주소가 탄력적 IP주소다 저걸 3번 박스에 입력하면된다. 그리고 4번 박스에는 우리가 로그인하던 EC2 계정인 ubuntu를 입력해주고 5번은 우리가 PuTTY로 접속할때 SSL AUTH로 등록해놓은 ppk파일을 입력해준다. 마지막으로 6번 포트는 3306이 아니고 내컴퓨터에서 가상 포트로 접속할 것임으로 3306이 아닌 안쓰고있는 3307, 3308 이런걸로 정해주고 7번 Open을 해보자

2. 접속 성공

 

 

 

 

  뚜둔 정상적으로 연결이 됐다 ㅎㅎ

 

#아마존 #AWS #EC2 #마리아DB #원격접속 #설정하기 #HeidiSql #plink #ssh #원격

 

 

반응형
  1. 안녕하세요 2021.04.03 15:20

    안녕하세요
    네트워크 유형에 MYSQL (SSH tunnel) 이 없는데 혹시 MariaDB or MUSQL (SSH tunnel) 로 선택하고 이어서 따라해도 될까요?
    또 maria db 포스팅을 따라할때 'access denied for ser 'root'@'localhost' 라는 오류가 떠서 댓글에서 말씀해주신대로 하여 무사히 mariaDB [(none)]> 까지 따라갔었는데요.
    이 포스팅을 따라 열기를 누르면 또 같은 오류 메세지가 뜹니다
    어떻게 해야할까요?

    • Arsene H 2021.10.06 17:24 신고

      root 계정에 plugin이 무엇으로 설정되어있는지를 확인해야해요!

      1. mysql -u root -p 명령어로 접속하세요
      (이전포스팅처럼 puTTy로 접속이요!)
      2. USE mysql 명령어 입력하세요.
      (MariaDB [(none)]>이 MariaDB [mysql]>으로 바뀔거예요)
      3. SELECT user,host,plugin FROM user; 명령어 입력하세요.
      (2x3 박스가 select 됩니다)
      4. root행의 3번째열을 확인해주세요
      (plugin이 아닐가능성이 높아요 예:
      unix_socket)
      5. UPDATE user SET plugin='mysql_native_password' WHERE user='root'; 명령어를 입력합니다.
      (root계정을 plugin으로 바꿉니다.)
      6. FLUSH PRIVILEGES; 명령어를 입력합니다.
      (새로고침인데 안하면 적용안될 수도
      있다더라고요..)

  2. latte 2021.05.17 22:14

    안녕하세요!
    너무 좋은 포스팅 감사합니다! 하나하나 따라해보고 있어요
    저도 위에 분과 똑같은 오류 메세지가 뜨는데 해결 방법이 있을까요?ㅠㅠ

  3. Arsene H 2021.10.06 16:50 신고

    선생님 안녕하세요 이전에도 답글남긴 학생입니다. 포스팅 너무 잘보고있습니다...

    그런데 윗 덧글처럼 Access denied for user 'root'@'localhost' 라는 오류가 뜹니다.... 제발 알려주세요ㅠㅠ 부탁드립니다..

    • Arsene H 2021.10.06 16:55 신고

      참고로 이전 포스팅에서 sudo su root로 변경해서 해야만 되었습니다. 이게 문제일까요????

    • Arsene H 2021.10.06 17:07 신고

      해결했습니다!!!!!!!

반응형

 

https://extsdd.tistory.com/108

 

[GIT/GITHUB] #3 깃허브 - 이클립스 스프링 저장소 연동 / 원격 저장소

https://extsdd.tistory.com/107 [GIT/GITHUB] #2 깃허브 회원가입 / 로컬 저장소 - 원격 저장소 연동 / Git 시작하기 / 소스 전송 https://github.com/ Build software better, together GitHub is where people..

extsdd.tistory.com

 


  저번 시간에 내 깃허브랑 이클립스랑 연동도 해놨으니, 이번엔 내 이클립스 소스를 내 깃허브에 올려보자! 만약 연동이 안됐다면 위 링크된 포스팅을 참조해서 만들어놓자!

1. 프로젝트 로컬 저장소 Commit

 

 

 

  자 깃허브로 올릴 프로젝트를 오른쪽마우스 누르고 Team 메뉴로가 Share Project.. 버튼을 눌러주자!

 

 

  저장소 타입을 Git으로 설정하고 다음!

 

 

  저장소가 처음에 비어져있는데(1번 위에박스) 그거 누르면 아래에 내가 추가했던 git 저장소가 나온다 클릭해주고 Finish를 눌러주자!

 

 

 

  패키지 익스플로어를 보면 프로젝트명 옆에 GIT 명칭이 추가됐으면 성공한 것이다. 방금 로컬 저장소에 배포한 것임으로 내 로컬 저장소에가면 내 소스들이 통째로 만들어져있는걸 확인할 수 있다.

2. 프로젝트 원격 저장소 commit

 

 

전송중...

 

자 프로젝트를 오른쪽마우스 클릭해주고 Team메뉴에 마우스를 대보면 새로운 메뉴들이 생긴것을 볼 수 있다. 맨위에 Commit을 눌러주자

 

 

  어떤 파일들을 올릴꺼냐고 뜨는데 첫 Commit이니 전체파일을 올려줄꺼다. 저 1번 박스에있는 +가 겹친 아이콘을 눌러주자!

 

 

  그럼 파일들이 1번으로 넘어오게 된다. 2번을 보면 이 commit하는 소스들이 어떤 기능을 하기 위해 commit하는지 주석처럼 자유롭게 서술하는 부분이다. 나는 걍 첫 commit이니 할말 없어서 Test라고 적었다. 그리고 저기 날짜와 작성자를 같이 써놓으면 나중에 찾기 편하다.

 

  3번은 작성자와 배포자인데 누가 한건지 설명을 써주는 부분이다. 마지막으로 4번을 보면 그 옆에 Commit이 있고 Commit and Push가 있는데 차이점을 알아보자.

 

  - Commit : 로컬 저장소에 반영

  - Push : 원격 저장소에 반영

 

 즉 Commit and Push는 로컬에도 반영하고 그걸 원격에도 반영하겠다는 All in 1 버튼인거다. 우린 서버까지 올릴꺼기 때문에 4번 버튼을 눌러주자!

 

 

  기다리면 뭐 Push가 완료됐다는 메시지가 뜬다. 한번 원격서버를 보자.

 

 

  짜잔 내 프로젝트가 정상적으로 GITHUB에 올라왔고 아까 적었던 주석 메시지도 정상적으로 들어왔당 ㅎㅎ

 

 

  이 로컬 저장소에있던 파일들을 그대로 원격 저장소로 보낸 것이다.

 

  이제 내 소스들도 서버에 백업시켜 놓았으니, 뭔가 하다가 안될때 예전으로 되돌리기 수월해졌다. 내일 아침부터 다시 MariaDB연결을 시작해보자!

 

#GIT #깃허브 #GITHUB #이클립스 #프로젝트 #원격 #로컬 #저장소 #올리기 #커밋 #commit

 

 

 

반응형
반응형

 

https://github.com/

 

Build software better, together

GitHub is where people build software. More than 50 million people use GitHub to discover, fork, and contribute to over 100 million projects.

github.com

 

1. GITHUB 회원가입

 

  위 링크로 빠르게 들어가보자.

 

 

  회원가입 클릭!

 

 

  적당히 회원정보를 입력해주고 Create Account를 눌러주자!

 

 

 

  설문조사처럼 뭔가를 조사한다. 씹초보마냥 선택해줬다.. 왠지.. 개발자라고하면 요금을 부과할 것 같은 심리적 압박감.. 알아서 선택해주면 된다.

 

 

 

  인증 메일을 보냈단다. 메일함으로가서 인증을 해주자.

 

 

  메일함.. 도착..인.증.시.작

2. 저장소 생성

 

 

 

  인증을 하면.. 지금 막 도착해서 GITHUB 둘러볼 시간도 없이.. 다짜고짜 바로 뭐할꺼냐고 추적한다...저장소를 만들꺼라고.. 선택해주자..

 

 

 

  1. 프로젝트 이름 설정

자 앞으로 저기 레포지토리 네임에 적은 문자가 자기 깃허브의 주소가 될꺼니 신중하게 적는다. fuck이런거 적지말고..

 

  2. 설명

걍 프로젝트 설명이다 안써도 되니 쓸사람은 쓰자.

 

  3. 공개 여부

Public을 선택하면 전체 공개가 되고 Private를 선택하면 자기자신과 자기가 선택한 사람만 볼 수 있다. 나는 부끄러우니.. Private를 선택..!

 

  4. 로컬 저장소 연결 방법 스킵여부

저거 체크안하고 그냥 두면. 이따가 이미 생성된 로컬저장소랑 연결하는 방법에 대해 가이드 해준다. 그냥 두자.

 

  5. 최종적으로 저장소를 만들어주자!

 

3. 로컬저장소 연동

 

 

 

  자 넘어온 화면을 보면 어떻게 저장소를 뭐 구성할꺼냐는 질문이다. 자 우린 기존에 로컬저장소를 만들었기 때문에 1번 방법을 선택할 것이다. 머 버튼누르고 이런건아니고 저기 나온 명령어를 GIT 배쉬 쉘에 입력해주자.!

https://extsdd.tistory.com/106

 

[GIT] GIT 설치 및 로컬 저장소 만들기 / 형상관리툴 / SVN 차이점

SW 형상관리 형상관리란, SW의 형상을 관리하는 것이다. 구체적으로 말하자면 음.. 일단 소프트웨어라는건 서비스가 출시를 한다고해서 거기서 끝나는게 아니고, 어떤 오류가 났다, 아님 어떤 기�

extsdd.tistory.com

  아 ! 혹시 로컬 GIT 저장소가 생성되지 않았다면 위 포스팅을 참조해서 만들고 오자!

 

 

  다시 본론으로 돌아와서, 본인 GIT 로컬 저장소에서 오른쪽 마우스를 누른뒤 Git Bash Here버튼을 눌러 Bash Shell을 실행해주자.

 

 

  자 가이드에 나온건 명령어 6줄..! 완전히 똑같이는 아니고. 우린 로컬 저장소를 만들었기 때문에 방법이 조금 다르다. 예를들면 "git init" 명령어의 경우에는 저번에 입력했으니 안한다. 어쨋든 어려운건 아니고. 집중만 하면 된당!

명령어 1

 

 

 

echo "# cp_service" >> README.md

 

위 명령어를 입력해 README.md라는 일종의 테스트 파일을 작성해주자.

명령어 2

 

 

 

git add README.md

 

git add 명령어를 이용해서 저 파일을 추가해주자.

 

 

echo 명령어로 파일을 생성했기 때문에 실제로 내 로컬 저장소 위치에 README.md 파일이 생긴 것을 볼 수 있다.

 

명령어 3

 

 

 

git config --global user.email "자기@이메일" 
git config --global user.name "유저네임"

 

자 저 두줄을 각각 입력해줄 껀데 전역변수에 내가 누군지를 지정하는것이다. 먼저 저 이메일은 GItHub 가입했던 이메일을 입력해주고, 유저네임 역시 깃헙에 입력했던 유저네임을 써주자!

명령어 4

 

 

 

git commit -m "first commit"

 

커밋 명령어를 입력해보자.

명령어 5

 

 

 

git remote add origin https://github.com/자기계정/프로젝트이름.git

 

자 리모트 주소를 넣어주장! 이거 소스는 저기 가이드 화면에 작성되어 있다.

명령어 6

 

 

 

 

git push -u origin master

 

자 마스터에 내용을 넣어보자!

 

 

그럼 로그인 창이 뜨는데 GitHub 계정을 넣어주고 로그인 해주자

완료

 

 

 

와우 ~ 아까 내 로컬 컴퓨터에서 작성했던 README.md 파일이 내 깃헙으로 올라왔다~ 성공~ 예~

 

#GIT #GUTHUB #깃 #깃허브 #회원가입 #로컬 #원격 #저장소 #연동 #시작하기 #소스 #전송

 

반응형

+ Recent posts