MySQL은 아마도 제일 많이쓰이는 서버용 데이터베이스이다. 당연히 관리도구도 다양하게 있는데 웹상에서 MySQL을 관리할 수 있도록 해주는 것이 phpMyAdmin이다.
애증의 phpMyAdmin
많이 쓰이는 PHP 프로젝트는 단연 워드프레스 (그리고 유럽에서는 드루팔?) 이겠지만, phpMyAdmin도 빼놓을 수 없다. 아아아-phpMyAdmin, 그 애증의 프로젝트여! 구글에 아무리 phpMyAdmin alternative라고 검색해봐도 그 대안을 찾을 수 없다. 예전에는 보안 구멍이 많았지만, 이제는 제대로 사용하면 많이 해결되었다.
하지만 그래도 phpmyadmin을 쓰기는 꺼려진다. 왜냐하면:
- PHP를 깔아야 한다.
Java나 Python으로 운영되는 서비스에 MySQL을 관리하기 위해서 PHP를 깔아야 한다. 참으로 찝찝한 일이다. - 보안 문제
하도 크롤러들이 phpmyadmin URL을 찾고 다니니 이름이라도 adminmyphp 이런 식으로 바꿔두곤 한다. 그래도 웹에 관리 페이지가 노출되어있다는 점은 아무리 URL을 변경해도 찝찝한 일이다. 물론 VPN 등 대안은 있지만.. - phpMyAdmin을 설치하면 MySQL에 phpMyAdmin을 위한 테이블을 생성한다. 이런거 싫어..
그래서 대안을 찾다가 찾다가 드디어 찾은 내 필요에 딱 맞는 대안이 MySQLWorkBench + 터널링이다.
모든 기능이 있지만 포트가 열려있어야 쓸 수 있는 MySQL Workbench
MySQL Workbench는 MySQL에서 제공하는 공식 GUI이다. 물론 phpmyadmin이 하는 일을 모두 할 수 있다. 관리, 쿼리, 백업 등등등. Mac과 Windows 모두 지원한다. 하지만 문제는 MySQL에 접속하기 위한 포트를 열어주어야 한다는 점이다. 요즘 세상에 누가 이런거 열고다니나! MySQL접속 포트를 열고 다니는 건 바지 지퍼를 열고 다니는 것과 같다. 그 대안으로 MySQL Workbench는 SSL 접속을 제공하지만 ssh를 public key 인증 방식으로 사용하는 경우만 지원하는 것으로 보인다. 설정 방법은 잘 설명해 놓은 한글 가이드를 읽어보자. (알려주신 @giseongeom 님 감사) 하지만 나는 그냥 패스워드 인증을 하고 싶었다.
지퍼는 닫고 터널을 열자. 터널링
나의 해결책은
- ssh를 통해서 ‘내 컴퓨터의 특정 포트’와 ‘서버의 특정 포트’간에 터널을 열어주고
- 위에 만든 ‘내 컴퓨터의 특정 포트’에 접속
두둥! 이제 당신은 서버의 MySQL포트 (3306)을 열 필요 없이 MySQL을 MySQL Workbench로 관리할 수 있다.
솔직히 잘 모르겠다. 터널링이 기술적으로 어떤 것이며 어떻게 동작하는지. “ssh 터널링”이라고 구글 검색하면 자료가 많이 나온다. 결국 여러분은 마법의 한 줄 명령어가 필요한것 아니겠는가!
ssh -L33066:127.0.0.1:3306 user@example.com
- 33066: 내 컴퓨터에서 사용할 포트. 나는 내 컴퓨터에서 테스트용으로 MySQL으로 돌릴 때도 있어서 3306이 아닌 33066을 사용했다.
- 127.0.0.1: 내 컴퓨터의 아이피.
- 3306: 서버에서 접속할 포트
- user@example.com: 접속할 서버쪽 사용자와 서버명
이러면 일반 ssh같이 접속이 된다. 하지만 실은 이 ssh를 통해서 터널도 생긴 것이다. MySQL Workbench에서 127.0.0.1 의 33066에 접속하면 서버에 접속된다.
이 글을 이제는 아무도 가지 않는 나의 옛 벗 phpschool.com 에 바친다.