AWS EC2 인스턴스의 MySQL 서버 외부접속을 위해 DataGrip을 사용하였다.
1. MySQL 사용자 생성
PuTTY 터미널에서 명령어를 입력해준다.
- 안전성을 위해 root계정으로 외부에서 접속하는 것보다 새로운 사용자 계정을 만들어 줄 것이다.
- root 계정으로 접속 후, 사용자를 만들어준다. 우리는 외부에서 접근할 것이므로 외부에서 접근가능하도록 설정한다.
$ sudo mysql -u root -p
mysql> create user '사용자명'@'%' identified by '패스워드';
사용자를 생성할 때 접근 허용 범위를 설정할 수 있다.
- '사용자명'@'%' : 해당 사용자는 외부에서 접근가능
- '사용자명'@'localhost' : 해당 사용자는 내부에서만 접근 가능
- '사용자명'@'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 '사용자명'@'%'; // 해당 사용자에 대한 권한 조회
- grant 권한 on 데이터베이스.테이블 to 계정@호스트;
- grant all privileges on *.* to 계정@'%'; : 모든 권한 부여
- 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에서 확인해보았다.
외부 연결이 성공적이라면 위와 같이 잘 출력되는 것을 확인 할 수 있다.
'서버세션 > Server' 카테고리의 다른 글
도메인 구입 후 서버에 도메인 설정하기 (0) | 2021.04.20 |
---|---|
phpmyadmin 설치 (0) | 2021.04.20 |
[웹 서버] Apache와 Nginx 차이점 (0) | 2021.04.19 |
[AWS 서버구축] Linux + Nginx + PHP + MySQL (0) | 2021.04.19 |
[Local서버구축-2] 외부 접속을 위한 포트 포워딩 (Port Forwarding) (0) | 2021.04.19 |
댓글