외부 접속을 하기 위해서 DB 개발과 관리를 용이하게 해주는 GUI 개발 툴이 필요하다.
그 예시로는 MysqlWorkbench와 DataGrip이 있는데, Workbench는 이미 사용경험이 있으므로 지금은 DataGrip을 사용해볼 것이다.
(1) DataGrip 설치
www.jetbrains.com/ko-kr/datagrip/download/#section=windows
(2) MySQL 사용자 생성
외부에서 원격으로 접속하기 위해, root보다도 새로 사용자를 만들어주고 해당 사용자 계정으로 접속할 것이다.
우선, 이전 게시글에서 만들었던 ec2 서버에 접속한다.
$ cd 폴더
$ ssh -i 키파일.pem ubuntu@ec2-탄력적아이피주소.ap-norheast-2.compute.amazonaws.com
root 권한으로 접속해서, 새로운 user 계정을 생성한다. root는 보안에 취약하기 때문이다.
$ sudo mysql -u root -p #mysql접속
mysql> create user 'name'@'%' identified by 'password'; #user생성
mysql> grant all privileges on *.* to 'name'; # 모든 데이터베이스의 모든 테이블에 대한 권한 부여(*.* 이 모든 테이블이란 뜻이다.)
mysql> FLUSH PRIVILEGES; # 변경한 권한을 즉시 반영시켜주는 명령어
mysql> mysql -u '아이디' -p # 만든 아이디로 접속
name이라는 이름의 사용자를 만들고 비밀번호를 설정한다.
사용자를 생성할 때 접근 허용 범위를 다음과 같이 설정 할 수 있다.
'Username'@'%' : 해당 사용자는 외부에서 접근가능
'Username'@'localhost' : 해당 사용자는 내부에서만 접근 가능
'Username'@'xxx.xxx.xxx.xxx' : 해당 사용자는 지정한 ip주소로만 접근 가능
사용자가 잘 생성되었는지 확인한다.
mysql> show databases;
mysql> select databases(); # 현재 database를 보여줌
mysql> user mysql; # mysql database를 사용
mysql> select user, host from user; # mysql database의 사용자 목록 출력
(3) 데이터베이스 생성
mysql> create database db;
mysql> show databases;
(4) 데이터베이스 권한 부여
이제 위에서 생성한 사용자에게 데이터베이스에 대한 권한을 부여합니다.
mysql> grant all privileges on db.* to 'name'@'%';
mysql> flush privileges;
mysql> show grants for 'name'@'%'; # 해당 사용자에 대한 권한을 보여줌
만약 권한을 해제하고 싶으면 다음과 같은 명령어를 입력한다.
mysql> revoke all privileges on db.* from 'name'@'%';
(5) MySQL 외부 접속 설정
이제 외부 접속을 하기 위한 설정을 한다.
MySQL의 설정 파일인 /etc/mysql/mysql.conf.d/mysqld.cnf 를 수정한다.
(이 때, 기본 터미널에서 실행)
$ cd /etc/mysql/mysql.conf.d
$ sudo vim mysqld.cnf
bind-address를 0.0.0.0으로 설정해서 외부 접속을 허용해준다.
변경사항을 적용하기 위해서 mysql을 재시작한다.
$ sudo service mysql restart
(6) 포트 포워딩
그다음으로 포트 포워딩을 해준다. AWS EC2 인스턴스(서버)의 인바운드 규칙을 수정해주어야 한다.
(인스턴스 -> 보안 -> 보안그룹 -> 인스턴스 편집)
MYSQL 규칙을 추가하고 위치 무관으로 설정해서 어디서나 접근할 수 있도록 한다.
(7) DataGrip으로 외부에서 MySQL 접속
위에서 설치한 DataGrip을 실행시킵니다.
1. 빈 프로젝트를 생성하고, Database 버튼을 클릭한 뒤, MySQL을 선택
2. 데이터 베이스 정보 입력
Name, Host (AWS EC2 인스턴스의 공인 ip), port번호(자동지정, 3306), User+Password(mysql의 사용자와 비밀번호)를 입력해한다.
이후 아래의 Test Connection으로 연결이 잘 되는지 확인한다.
3. 접속 확인
Test Connection을 누르고 다음과 같이 나온다면 접속이 잘 되는 것이다.
이제 Apply 버튼을 눌러서 AWS EC2 인스턴스의 MySQL 정보들을 불러온다.
데이터베이스를 확인하기 위해서, 초록색 실행 버튼을 누르면 아래처럼 데이터베이스가 나오는 것을 확인할 수 있다.
이로서 외부 접속이 잘되고 MySQL안 특정 사용자의 Database도 확인할 수 있다.
'👩💻 Web Programming > Web Server' 카테고리의 다른 글
4. AWS 서버 Domain 연결 (0) | 2021.03.29 |
---|---|
3. Ubuntu 18.04+AWS+Apache2+APM 위 PHPMyAdmin 설치 (0) | 2021.03.29 |
1. AWS 서버 구축하기+외부에서 접속 Mac 맥북 (0) | 2021.03.29 |
Local Server 구축하기 with Mac OS (0) | 2021.03.26 |
Ubuntu 18.04 + APM-php 컴파일/소스 설치 (0) | 2021.01.30 |