인텔리제이로 외부에서 MySQL 접속하기

콜트·2021년 1월 7일
0

본 글은 인텔리제이로 AWS EC2 인스턴스 내부의 MySQL 서버에 외부 접속하는 방법을 다루고 있습니다. 본 실습에 사용된 인텔리제이는 Community 버전이 아닌 Ultimate 버전인 점을 유의하시기 바랍니다.

로컬에서 원격 데이터베이스로 붙을 때 사용하는 MySQL의 대표적인 GUI 클라이언트는 Workbench, SQLyog(유료), Sequel Pro(맥 전용), DataGrip(유료) 등이 있습니다. 각각의 도구마다 큰 차이가 없으니 본인이 가장 좋아하는 툴을 사용하면 됩니다. 인텔리제이 Community 버전을 사용한다면 Database 플러그인을 설치해서 진행할 수도 있습니다.

MySQL 유저 생성

  1. EC2 인스턴스 서버에 접속한 뒤, sudo mysql -u root -p 를 통하여 mysql에 접속한다.
    1  MySQL 유저 생성-1

  2. 유저를 생성한다.
    1  MySQL 유저 생성-2

  • 'testUser'@'%' : testUser id는 외부에서 접근 가능
  • 'testUser'@'localhost' : testUser id는 내부에서 접근 가능
  • 'testUser'@'192.168.0.xxx' : testUser id는 192.168.0.xxx IP로만 접근 가능
  • 여기서 host%*(애스터리스크)와 같은 의미이다.
  1. 다음과 같은 순서로 유저가 잘 생성되었는지 확인해본다. colt라는 user가 생성된 것을 확인할 수 있다.
    1  MySQL 유저 생성-3

  2. 간단하게 테스트용으로 사용할 데이터베이스 RP2를 만들었다.
    1  MySQL 유저 생성-4

  3. 다음으로는 조금 전에 생성한 colt라는 유저에게 RP2 데이터베이스에 대한 권한을 부여한다(권한에는 열람권한도 포함되어 있는데, 이 권한이 없으면 show databases; 명령어를 입력해도 권한이 없는 데이터베이스는 보이지 않는 것 같다. 이것 때문에 후에 확인하느라 삽질 좀 했다).
    1  MySQL 유저 생성-5

MySQL 외부 접속 설정

  1. 이제 외부 접속을 하기위한 설정을 해줘야한다. 다음 명령어를 입력해 설정파일인 mysqld.cnf를 수정해주자.
    2  MySQL 외부 접속 설정-1

  2. mysqld.cnf 내부를 살펴보면 bind-address127.0.0.1로 되어있는데, 외부 접속을 허용해주기 위해 이를 0.0.0.0으로 바꿔준다.
    2  MySQL 외부 접속 설정-2
    2  MySQL 외부 접속 설정-3

  3. 그리고 다음으로는 AWS EC2 인스턴스인바운드 규칙MySQL 접속을 위한 3306 포트를 추가(개방)해준다.
    2  MySQL 외부 접속 설정-4

  4. 앞서, 설정 파일을 변경했으므로 변경사항을 적용해주기 위해 mysql을 재실행해준다.
    2  MySQL 외부 접속 설정-5

인텔리제이에서 AWS EC2 인스턴스MySQL 서버 외부 접속하기

  1. 인텔리제이에서 빈 프로젝트를 하나 생성한다.
    2  외부 접속-1

  2. 우측에 Database 단추를 클릭한 뒤,
    2  외부 접속-2

  3. 다음과 같이 MySQL을 선택해준다.
    2  외부 접속-3

  4. 그러면 다음과 같이 데이터베이스 정보를 입력하는 창이 나오는데, Name에는 원하는 이름을, Host에는 AWS EC2 인스턴스퍼블릭 IPv4 주소를, UserPassword에는 조금전에 EC2 인스턴스MySQL에 접속해서 생성한 유저명과 비밀번호를 입력해준다. 그 다음에 아래에 있는 Test Connection 버튼을 누르면!
    2  외부 접속-4

  5. 초록색 체크 표시와 함께 외부에서 접속할 수 있게 된다.
    2  외부 접속-5

  6. Apply 버튼을 눌러 적용한 뒤 OK 버튼으로 빠져나오면 우측에 아까 EC2 인스턴스에서 생성한 데이터베이스인 RP2가 보인다. 이렇게 되면 외부 접속이 잘 이루어진 것이다.
    2  외부 접속-6


참고자료


profile
개발 블로그이지만 꼭 개발 이야기만 쓰라는 법은 없으니, 그냥 쓰고 싶은 내용이면 뭐든 쓰려고 합니다. 코드는 깃허브에다 작성할 수도 있으니까요.

0개의 댓글