[Server] AWS EC2 mysql 외부접속하기 - SSH Tunnel
전체 과정
1. mysqld. cnf 파일 수정하기
2. 인스턴스, 인바운드 규칙에 mysql 포트인 3306 추가하기
3. mysql root의 host 변경
4. MySQL Workbench에서 서버 MySQL 열기
1. mysqld. cnf 파일 수정하기
(1) 아래 경로로 이동해서 파일을 연다.
cd /etc/mysql/mysql.conf.d
sudo vi mysqld.cnf
(2) bind-address 주석을 풀고 127.0.0.1 -> 0.0.0.0 으로 바꿔준다.
2. 인스턴스, 인바운드 규칙에 mysql 포트인 3306 추가하기
- 인바운드 규칙 추가 어디서 하는지 모르면 링크를 참고하자. (https://yell0wgreen.tistory.com/21)
3. mysql root의 host 변경
(1) mysql로 접속한다.
mysql -u root -p
(2) 우선 host 와 user를 확인해본다.
USE mysql;
SELECT Host, User from user;
(3) user의 host을 localhost에서 %로 바꿔준다. 이래야 외부에서도 접속이 가능하다.
바꾸고 반영을 해준 뒤 다시 테이블을 확인해준다.
UPDATE user set host = '%' where user = 'root' and host = 'localhost';
FLUSH previleges;
SELECT Host, User FROM user;
4. MySQL Workbench에서 서버 MySQL 열기
(1) workbench에서 MySQL Connections 옆에 있는 + 버튼 클릭
(2) connection name은 아무거나로 해주고
connection method는 standart TCP/IP over SSH 로 해준다.
SSH Hostname 에는 {서버IP}:22 (ex. 00.000.000.000:22)
SSH Username 에는 왼쪽사진에 입력했던 사용자 이름을 적어주고 (오른쪽 사진보면서 참고)
SSH Password 를 설정했었다면 입력해준다.
SSH KeyFile은 aws 인스턴스 시작하기할때 만들어줬던 .pem 파일을 넣어준다.
MySQL Hostname은 127.0.0.1 그대로 둔다.
MySQL Server Port 도 3306으로 그대로 둔다.
Username은 서버 mysql에서 쓸 유저네임을 뜻한다. 위에서 host을 %로 바꿔준 root을 입력하고
Password 에 root의 비밀번호를 입력해주면 끝!
(3) test connection 을 누르니 잘 작동된다. 이제 OK 눌러주면 끝이다.
Failed to Connect to MySQL at :3306 with user root
: Unable to connect to localhost
Could not connect the SSH Tunnel
:Unknown authentication type
위와 같은 에러로 인해 2시간 넘게 하다가 겨우 해결하고.... 많은 분들이 이거 보시고 해결하셨음 해서 .... 귀찮지만 남긴다...........