현재까지 내 환경을 정리해보면
클라우드 서버 : AWS EC2
WebServer : Nginx
BackEnd Language : PHP
DBMS : MySQL
이 환경이 구축되어 있지 않다면 앞선 포스팅을 통해 구축을 하고 와야 한다.
AWS에 Nginx, MySQL, PHP 구축 및 Nginx - PHP 연동
AWS EC2 인스턴스의 MySQL 서버에 외부 접속을 해보도록 하겠다.
처음에는 요즘 잘 나가는 jetbrains사의 DataGrip을 사용하려고 했으나 30일 무료체험판 밖에 없고
SQL은 추후에도 많이 다룰 것 같아서 기간제한없이 무료로 이용 가능한 MySQL Workbench을 설치했다.
https://dev.mysql.com/downloads/workbench/
🔧 MySQL Workbench 설치
다운을 받은 workbench를 잘 작동하나 실행시켜 보았더니
다음과 같은 팝업과 함께 실행이 되지 않는다.
이럴 때는 workbench를 종료한 후에
시스템 환경설정 > 보안 및 개인 정보 보호 > 일반 > 확인 없이 열기
여기서 확인 없이 열기를 누르고 다시 열면 정상 작동 된다.
📗 MySQL 사용자 생성
$ sudo mysql -u root -p
mysql> create user 'jminie'@'%' identified by 'password';
sudo를 통해 MySQL에 접속한다.
본인이 원하는 이름의 사용자를 만들고 비밀번호를 설정한다. ('password' 자리에 본인이 원하는 비밀번호 등록)
사용자를 생성할 때 접근 허용 범위를 다음과 같이 설정할 수 있다.
- 'Username'@'%' : 해당 사용자는 외부에서 접근 가능
- 'Username'@'localhost' : 해당 사용자는 내부에서만 접근 가능
- 'Username'@'xxx.xxx.xxx.xxx' : 해당 사용자는 지정한 ip주소로만 접근 가능
사용자 확인
mysql> show databases; // 현재 database를 보여줌
mysql> select user, host from user; // mysql database의 사용자 목록 출력
다음 코드로 사용자가 잘 생성되었는지 확인한다.
다음과 같이 jminie로 내가 만든 사용자가 잘 생성되었음을 확인할 수 있다.
📘 데이터베이스 생성
mysql> create database jminieDB
mysql> show databases;
create로 데이터베이스를 생성하고 show를 통해 잘 생성되었는지 확인한다.
데이터베이스 권한 부여
mysql> grant all privileges on jminieDB.* to 'jminie'@'%';
mysql> flush privileges;
mysql> show grants for 'jminie'@'%'; // 해당 사용자에 대한 권한을 보여줌
위에서 생성한 사용자에게 데이터베이스에 대한 권한을 부여한다.
다음과 같이 권한이 잘 부여된 것을 확인할 수 있다.
📙 MySQL 외부 접속 설정
MySQL 설정 파일의 위치는 /etc/mysql/mysql.conf.d이다.
$ cd /etc/mysql/mysql.conf.d
$ sudo vim mysqld.cnf
다음과 같이 bind-address 부분을 0.0.0.0으로 설정을 해서 외부 접속을 허용해준다.
포트 포워딩 확인
AWS EC2 인스턴스(서버)의 인바운드 규칙을 수정해준다.
유형을 MySQL로 설정하면 자동으로 포트 범위를 3306으로 지정해 줄 것이다.
$ sudo service mysql restart
포트 포워딩을 마쳤으면 MySQL을 재시작해준다.
📖 MySQL Workbench에서 외부 접속하기
Workbench를 실행한다.
여기서 "+" 기호를 눌러서 새로운 커넥션을 만들어준다.
그러면 새로운 커넥션 설정하는 창이 나오는데
여기서 Connection Name은 본인이 원하는 아무 이름이나, hostname에는 자신의 public IPv4 주소를 입력해준다. 그리고 username은 아까 생성한 유저의 이름을 넣어주고 store in keychain을 눌러 user의 비밀번호를 입력해준다.
그리고 test connection을 눌러보면
외부 접속이 잘되고 MySQL안 특정 사용자의 Database(여기서는 jminieDB)도 확인할 수 있다.
Reference:
https://luminitworld.tistory.com/82?category=975147
https://velog.io/@woals4815/MySQL-외부-접속-하기MySQLWorkbench-이용
https://haddoddo.tistory.com/entry/MAC-MAC에서-MySQLWorkbenchMySQL워크벤치-설치-사용법
'Server Program' 카테고리의 다른 글
AWS Nginx에 HTTPS 적용하기 (Let's Encrypt) (0) | 2021.09.24 |
---|---|
도메인 구입(가비아) 및 설정 (0) | 2021.09.24 |
AWS Nginx에 PHPMyAdmin 설치하기 (0) | 2021.09.22 |
AWS에 Nginx, MySQL, PHP 구축 및 Nginx - PHP 연동 (0) | 2021.09.20 |
Local 서버 구축 / 포트포워딩을 통한 외부접속하기 (0) | 2021.09.20 |