phpmyadmin의 궁극적인 대안: MySQL Workbench + 터널링

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 님 감사) 하지만 나는 그냥 패스워드 인증을 하고 싶었다.

지퍼는 닫고 터널을 열자. 터널링

나의 해결책은

  1. ssh를 통해서 ‘내 컴퓨터의 특정 포트’와 ‘서버의 특정 포트’간에 터널을 열어주고
  2. 위에 만든 ‘내 컴퓨터의 특정 포트’에 접속

두둥! 이제 당신은 서버의 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 에 바친다.