반응형

오랫만에 서버 이전을 하고 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

반응형
반응형

 

  PuTTY를 이용해서 원격 EC2 서버에 접속하자. 만약 방법을 까먹었다면 아래 포스팅을 참고하면 된다.

https://extsdd.tistory.com/78

 

[아마존 AWS EC2] #1 EC2 서버 접속하기 / PUTTY 다운 및 설치 / PEM→PPK 변환 / Server refused our key

https://extsdd.tistory.com/77 [아마존 AWS 무료 EC2 서버 생성하기] #3 EC2 인스턴스 생성 / 구축 / 방화벽이란? / 탄력적 IP https://extsdd.tistory.com/76 [아마존 AWS 무료 EC2 서버 생성하기] #2 IAM 계정..

extsdd.tistory.com

1. 패키지 업데이트

 

apt-get update

 

  위 명령어를 쉘에서 실행해주자.

 

 

  완료!

 

2. server 폴더 생성

 

 

 

  먼저 Root 디렉토리에 Server 디렉토리를 만들어주자.

cd /
mkdir server
ls- al

 

  위 명령어를 차례로 입력하면 최상이 폴더 이동 후 server 폴더를 만든다. 그리고 ls-al명령어를 통해 해당 Root폴더에 뭐가있는지 본다. 결과로 server 폴더이 있으면 된다.

 

 

  그리고 그 만들어진 server 폴더로 이동해주자.

cd ./server

 

3. 톰캣 파일 다운

 

 

 

  wget 명령어를 이용해서 설치파일을 받아오자.

wget https://downloads.apache.org/tomcat/tomcat-8/v8.5.55/bin/apache-tomcat-8.5.55.tar.gz

위 명령어를 이용하면 된다.

 

4. 톰캣 압축 해제

 

 

 

tar -zvxf apache-tomcat-8.5.55.tar.gz

 

  그 상태에서 tar 명령어를 이용해 압축을 풀어주자.

5. 톰캣 구동

 

 

 

  일단 설치된 톰캣 폴더로 이동해주자.

cd /server/apache-tomcat-8.5.55/bin

 

  위 명령어를 입력하면 압축풀린 톰캣 폴더로 이동된다.

./startup.sh --톰캣 시작
./shutdown.sh  -- 톰캣 종료

 

  자 위처럼 톰캣/bin 경로에서 ./startup.sh 를 입력하면 톰캣이 시작된다 구동해보자.

 

 

  짜잔 구동 성공~

 

6. 톰캣 구동 확인

 

  http://본인EC2서버IP:8080/

  위 링크로 접속해보자. "본인EC2서버IP" 대신 본인 AWS EC2 인스턴스 IPv4 주소를 입력하면 된다.

 

 

 

  이렇게 고양이가 뜨면 성공~ 만약에 안되면 "sudo reboot now" 명령어를 쳐서 서버를 재부팅하고 다시 톰캣을 구동해보면 된다.

 

#아마존 #AWS #EC2 #인스턴스 #아파치 #톰캣 #설치 #접속 #구동 #우분투

 

 

 

반응형
반응형

 

  과거 포스팅을 보면 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/103

 

[Maria DB] 마리아 DB 10.5 다운 및 설치 / 서비스 확인 / 스프링 Spring

스프링 프로젝트에 Maria DB를 사용하기 위해서 설치해보자! Maria DB는 MYSQL DB개발자들이 나와서 만든 "무료" 오픈소스 DB라고 생각하면 된다! 성능이 뛰어난 Oracle, MSSQL은 라이센스가 없어 우리가 사

extsdd.tistory.com

 

저번에 마리아 DB 설치를 했으니 이제 접속을 해보자!

1. HeidiSQL 접속

 

  DB접속툴로 HeidiSQL을 사용한다. 따로 설치는 안해도 된다. 저번에 마리아 DB를 설치할때 같이 됐을 것이다. 윈도우키를 눌러 "Heidi"를 검색해보자

 

 

설치된 앱이 검색된다 실행해주자

 

 

이 화면이 나올텐데 접속 세션이 없으니 새로 생성해주자 7시방향에 신규 버튼을 클릭!

 

 

  기본적으로 위에 호스트 IP가 127.0.0.1(Localhost)로 설정되어있으니 자기 자신의 컴퓨터라는 뜻이다. 그리고 사용자 root는 관리자 권한이고 우리가 관리자니 root 계정으로 접속해보자. 자 따로 만진게 없으면 1번 항목에 있는 비번만 입력해주면 된다.

 

그리고 2번 저장버튼 클릭후 3번 열기를 눌러보자!

 

 

자 이런 화면이 나타났다면 본인 컴퓨터에 설치한 Maria DB 접속에 성공한 것이다.

 

 

 

이후 쿼리는 1번 쿼리탭을 열어 2번 공간에 작성해서 돌려보면 된다

 

#마리아DB #MariaDB #접속 #HeidiSQL #세션 #연결

 

 

 

반응형
반응형

https://extsdd.tistory.com/77

 

[아마존 AWS 무료 EC2 서버 생성하기] #3 EC2 인스턴스 생성 / 구축 / 방화벽이란? / 탄력적 IP

https://extsdd.tistory.com/76 [아마존 AWS 무료 EC2 서버 생성하기] #2 IAM 계정 생성 후 권한 부여하기! https://extsdd.tistory.com/75 [아마존 AWS 무료 EC2 서버 생성하기] #1 AWS 회원가입/ AWS란 1. 서론..

extsdd.tistory.com

  저번 포스팅을 마지막으로 EC2 서버 구축을 끝냈다. 이제 서버에 접속하는 법에 대해서 알아보자.

  우리는 PuTTY라는 툴을 이용해서 EC2 서버에 붙을 것이다. 이 툴은 원거리에 떨어져있는 장치에 원격으로 접속 할 수 있는 터미널이며, 비전공자들은 아마도 해커가 나오는 영화를 보면 이 비슷한 것들을 봤을 것이다. 계정을 입력하고 원격 클라이언트에 붙어서 휘졌고 다니는 것을.

 

  여기서 원격으로 붙는다의 의미는, 원래 전통적으로 내집에 서버를 올리면  서버컴퓨터를 키고 그 컴퓨터랑 연결된 모니터, 자판기, 마우스를 이용해 직접 그 서버 컴퓨터를 조작했었지만. 이제 클라우드 시대아닌가. 내 서버에 대한 자원은 아마존의 데이터센터에 있다. 어딘지도 모르는 수백, 수천 km 떨어진 곳에 내 EC2서버가 돌아가고 있으니 그 먼거리에있는 장치에 내가 원격 접속하는 원리이다.

1. PuTTY 다운

https://putty.ko.softonic.com/

 

PuTTY

완전하고 안정적인 텔넷 및 SSH 클라이언트

putty.ko.softonic.com

  잔말 그만하고 위 링크로 이동해서 PuTTY를 받자.

1. 페이지에 들어가서 무료 다운로드 클릭

2. 여기서도 무료 다운로드 클릭!

1. 하단에 다운되는 것을 보고 완료시 실행시킨다.

2. 긍정적인 버튼들을 눌러주며 설치를 진행한다.

 

 

2. .pem 파일을 .ppk 파일로 변환

  윈도우키나 시작버튼을 누르고 PUTTY를 검색하면 PuTTY앱과 PuTTYgen이 나온다. 우린 지금 PuTTYgen을 이용해서 .pem파일을 .ppk파일로 변환할 것이다. PuTTYgen을 실행해보자.

1. 상단의 Conversions 메뉴→ Import key 버튼을 클릭하여 전에 생성해줬던 .pem(키페어) 파일을 임포트한다.

※ 여기서 아니 무슨 갑자기 pem파일이야 ㅡㅡ 이게 먼데! 하는 사람들은

https://extsdd.tistory.com/77

 

[아마존 AWS 무료 EC2 서버 생성하기] #3 EC2 인스턴스 생성 / 구축 / 방화벽이란? / 탄력적 IP

https://extsdd.tistory.com/76 [아마존 AWS 무료 EC2 서버 생성하기] #2 IAM 계정 생성 후 권한 부여하기! https://extsdd.tistory.com/75 [아마존 AWS 무료 EC2 서버 생성하기] #1 AWS 회원가입/ AWS란 1. 서론..

extsdd.tistory.com

이 글을 참조하면된다. 중간쯤에 AWS_EC2라고 저장한 파일이 .pem 파일이다.

 

2. Save private key 버튼 클릭! 이때 절대 이 키파일은 외부에 노출되지 않도록 하자!

 

1. 경고창이 나오면 예버튼을 눌러주자.

2. PPK파일 확장자를 확인하고 원하는 위치에 저장한다. 이제 PuTTYgen은 종료해도 된다.

짜.잔. ppk 파일 생성!! 비전공자들에겐..! 그냥..! 공인인증서 정도로 생각하면 쉽다..! 물론.."공인"은 아니지만..

 

3. PuTTY EC2 인스턴스 서버 접속

  자 이제 PuTTY를 이용해서 원격 서버에 접속할껀데 어느 서버에 접속할지 주소를 알아야한다. 바로 IP주소!! 머리가 좋은 사람은 여기서 말한 IP주소가 저번 포스팅에서 했던 탄력적 IP란걸 알고있을 것이다. 모르는 사람들은 밑에 방법으로 알아내면 된다.

https://ap-northeast-2.console.aws.amazon.com/ec2/v2/home?region=ap-northeast-2#Addresses:

 

https://ap-northeast-2.console.aws.amazon.com/ec2/v2/home?region=ap-northeast-2#Addresses:

 

ap-northeast-2.console.aws.amazon.com

위 링크에 접속해서 좌측 탄력적 IP를 누르면 내 인스턴스에 할당된 IPv4 주소가 있다. 그게 바로 자기 EC2 인스턴스의 IP다. 바로 주소!!

 

  1. PUTTY를 실행하고 HostName에 자기 IP주소를 넣어준다. 프로토콜은 SSH로 연결할 것이기 때문에 22번 포트로 그대로 둔다.

  2. 좌측에 SSH탭 밑에 AUTH를 눌러주고 우측  Browse 버튼을 눌러 아까 만들어놨던 .ppk 파일을 불러와준다. 

  1. 이 연결을 저장시키기위해 11시방향 세션을 눌러주고 Saved Sessions 텍스트박스에 연결이름을 설정하고 Save 버튼으로 저장한다. 이제 마지막으로 Opne 버튼을 눌러준다.

  2. 연결을 신뢰하냐는 짊누에 예를 눌러준다.

  와우 shit~ 먼가 됐다.

 

ubuntu를 입력하고 엔터를 눌러주자!

shit~~~~~~~~~~~~~ 연결이 되버려따..! 혹시나 

 

이런 메시지가 나오면서 PUTTY상에 "Server refused our key" 메시지가 나왔다면 사용자 이름이 틀렸을 가능성이 있다.

 

우린 Ubuntu AMI로 인스턴스를 생성했기 때문에 이름이ubuntu인거고 다른 AMI로 설치했다면 계정이 달라진다.

 

Ubuntu AMI : ubuntu

Amazon Linux2 : ec2-user

Amazon Lunux AMI : ec2-user

Debian AMI : admin or root

Fedora AMI : ec2-user or fedora

 

위처럼 각 AMI마다 사용자 명이 다르니 알맞게 입력하면 된다.

 

 

이제 이 서버에 원격으로 접속해서 서비스를 하나씩 올려보도록 하자

 

 

 

#아마존 #AWS #EC2 #인스턴스 #서버 #PUTTY #SSH #접속 #PEMPPK변환 #ServerRefusedOurKey

 

 

 

 

 

 

 

반응형

+ Recent posts