본 글은 인텔리제이로 AWS EC2 인스턴스
내부의 MySQL
서버에 외부 접속하는 방법을 다루고 있습니다. 본 실습에 사용된 인텔리제이는 Community
버전이 아닌 Ultimate
버전인 점을 유의하시기 바랍니다.
로컬에서 원격 데이터베이스로 붙을 때 사용하는 MySQL
의 대표적인 GUI
클라이언트는 Workbench
, SQLyog
(유료), Sequel Pro
(맥 전용), DataGrip
(유료) 등이 있습니다. 각각의 도구마다 큰 차이가 없으니 본인이 가장 좋아하는 툴을 사용하면 됩니다. 인텔리제이 Community
버전을 사용한다면 Database
플러그인을 설치해서 진행할 수도 있습니다.
EC2 인스턴스
서버에 접속한 뒤, sudo mysql -u root -p
를 통하여 mysql
에 접속한다.
유저를 생성한다.
'testUser'@'%'
: testUser
id는 외부에서 접근 가능'testUser'@'localhost'
: testUser
id는 내부에서 접근 가능'testUser'@'192.168.0.xxx'
: testUser
id는 192.168.0.xxx
IP로만 접근 가능host
의 %
는 *(애스터리스크)
와 같은 의미이다.다음과 같은 순서로 유저가 잘 생성되었는지 확인해본다. colt
라는 user
가 생성된 것을 확인할 수 있다.
간단하게 테스트용으로 사용할 데이터베이스 RP2
를 만들었다.
다음으로는 조금 전에 생성한 colt
라는 유저에게 RP2
데이터베이스에 대한 권한을 부여한다(권한에는 열람권한도 포함되어 있는데, 이 권한이 없으면 show databases;
명령어를 입력해도 권한이 없는 데이터베이스는 보이지 않는 것 같다. 이것 때문에 후에 확인하느라 삽질 좀 했다).
이제 외부 접속을 하기위한 설정을 해줘야한다. 다음 명령어를 입력해 설정파일인 mysqld.cnf
를 수정해주자.
mysqld.cnf
내부를 살펴보면 bind-address
가 127.0.0.1
로 되어있는데, 외부 접속을 허용해주기 위해 이를 0.0.0.0
으로 바꿔준다.
그리고 다음으로는 AWS EC2 인스턴스
의 인바운드 규칙
에 MySQL
접속을 위한 3306
포트를 추가(개방)해준다.
앞서, 설정 파일을 변경했으므로 변경사항을 적용해주기 위해 mysql
을 재실행해준다.
AWS EC2 인스턴스
의 MySQL
서버 외부 접속하기인텔리제이에서 빈 프로젝트를 하나 생성한다.
우측에 Database
단추를 클릭한 뒤,
다음과 같이 MySQL
을 선택해준다.
그러면 다음과 같이 데이터베이스 정보를 입력하는 창이 나오는데, Name
에는 원하는 이름을, Host
에는 AWS EC2 인스턴스
의 퍼블릭 IPv4 주소
를, User
와 Password
에는 조금전에 EC2 인스턴스
의 MySQL
에 접속해서 생성한 유저명과 비밀번호를 입력해준다. 그 다음에 아래에 있는 Test Connection
버튼을 누르면!
초록색 체크 표시와 함께 외부에서 접속할 수 있게 된다.
Apply
버튼을 눌러 적용한 뒤 OK
버튼으로 빠져나오면 우측에 아까 EC2 인스턴스
에서 생성한 데이터베이스인 RP2
가 보인다. 이렇게 되면 외부 접속이 잘 이루어진 것이다.