본문 바로가기
서버세션/Server

[DataGrip] MySQL 외부접속

by 김긍수 2021. 4. 20.

AWS EC2 인스턴스의 MySQL 서버 외부접속을 위해 DataGrip을 사용하였다.

 

1. MySQL 사용자 생성

PuTTY 터미널에서 명령어를 입력해준다. 

- 안전성을 위해 root계정으로 외부에서 접속하는 것보다 새로운 사용자 계정을 만들어 줄 것이다.

- root 계정으로 접속 후, 사용자를 만들어준다. 우리는 외부에서 접근할 것이므로 외부에서 접근가능하도록 설정한다.

$ sudo mysql -u root -p
mysql> create user '사용자명'@'%' identified by '패스워드';

사용자를 생성할 때 접근 허용 범위를 설정할 수 있다.

  1. '사용자명'@'%' : 해당 사용자는 외부에서 접근가능
  2. '사용자명'@'localhost' : 해당 사용자는 내부에서만 접근 가능 
  3. '사용자명'@'XXX.XXX.XXX.XXX' : 해당 사용자는 특정 IP주소로만 접근 가능

2. Database 생성

mysql> create database 생성하고자하는 DB명
mysql> show databases;

3. Database 권한 부여

mysql> grant all privileges on 생성한DB명.* to '사용자명'@'%';
mysql> flush privileges;
mysql> show grants for '사용자명'@'%';    // 해당 사용자에 대한 권한 조회
  1. grant 권한 on 데이터베이스.테이블 to 계정@호스트;
  2. grant all privileges on *.* to 계정@'%'; : 모든 권한 부여
  3. grant all privileges on DB명.* to 계정@'%' ; : 특정 DB의 모든 테이블에 모든 권한 부여

만약 권한을 해제하고 싶다면

mysql> revoke all privileges on DB명.* from '사용자명'@'%';

4. MySQL 외부 접속 설정

외부 접속을 하기위해 MySQL 설정파일을 수정해주어야한다.

$ sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

위 명령어를 입력한 후 bind-address 부분을 주석처리 혹은 127.0.0.1로 되어있는 부분을 0.0.0.0 으로 설정하여 외부 접속을 허용해준다.

저장 후 변경사항을 적용하기 위해 재시작해준다.

$ sudo service mysql restart

 

5. 포트포워딩

AWS EC2 인스턴스의 인바운드 규칙을 수정해준다.

MySQL의 포트번호는 3306으로 설정되어있고 위치무관으로 설정해서 어디서나 접근가능하도록 규칙을 추가한다.

6. MySQL 외부 접속 

1. DataGrip 을 실행시키고 Mysql을 선택한다.

2. 데이터베이스 정보 입력

Name : 자신이 입력하고 싶은대로 입력한다.

Host : AWS EC2 인스턴스의 퍼블릭 IP를 작성한다.

Port : Mysql은 3306으로 정해져있다.

User/Password : Mysql 사용자 ID와 PASSWORD를 입력한다.

 

3. 데이터베이스 정보 접속 테스트

- 데이터 베이스 정보를 입력한 후 Test Connection 버튼을 클릭한 후 아래 이미지와 똑같이 나온다면 접속 테스트가 성공한 것이다. 확인 후 Apply 버튼과 Ok버튼을 눌러서 데이터베이스를 불러온다.

접속한 사용자에 대해 접근가능한 권한을 부여했지만, DB가 뜨지 않는다.

코드창에 show databases; 를 치고 실행하면 SilverDatabase는 잘 보인다. 

이것을 확인한 후 오른쪽 <schema> 를 SilverDatabase로 변경 후 Introspect schema를 클릭해주면 데이터베이스가 잘 보이는 것을 확인할 수 있다.

 

 

 

5. 외부접속 확인

외부 접속이 잘 되었는지 확인하기 위해서 Datagrip 에서 테이블을 생성한 후 PuTTy에서 확인해보았다.

외부 연결이 성공적이라면 위와 같이 잘 출력되는 것을 확인 할 수 있다.

댓글