이 무료 데이터베이스 클라이언트에는 심각한 문제가 있습니다... (DBX)

BBetter Stack
컴퓨터/소프트웨어AI/미래기술

스크립트

00:00:00이것은 dbx입니다. 출시된 지 몇 달밖에 안 된 무료 데이터베이스 클라이언트인데,
00:00:0690개가 넘는 데이터베이스 엔진을 지원하고 벌써 1만 8천 개 이상의 스타를 받았습니다. 심지어 코딩 에이전트가
00:00:12mcp를 통해 저장된 연결을 조회할 수 있게 해주죠. 너무 좋아 보여서 믿기지 않을 정도인데, dbx 파일 하나를 열어보면
00:00:19저장된 데이터베이스 비밀번호가 일반 텍스트로 저장됩니다. 어떤 사람이 6월 12일에 이 문제를 제기했는데
00:00:25여전히 열려 있습니다. 그런데도 이건 제가 본 것 중 가장 빠르게 성장하는 프로젝트 중 하나입니다. 먼저
00:00:30사람들이 왜 이ツール로 갈아타고 있는지 보여드린 다음, dbx.db를 열어보겠습니다.
00:00:40그렇습니다. dbx는 MySQL, Postgres, SQLite, Redis, Mongo 등 말 그대로
00:00:48거의 모든 것을 지원하는 무료 데스크톱 데이터베이스 클라이언트이며, 리드미에 따르면 90개 이상의 엔진을 하나의 창에서 지원합니다. 그리고 가격
00:00:55차이는 무시하기 어렵습니다. 이 때문에 인기가 급상승하고 있죠. Navicat Premium은 한 달에 80달러이거나
00:01:001,600달러 평생 라이선스인 반면 DataGrip은 첫해에 약 110달러, TablePlus는 100달러입니다.
00:01:08정도입니다. 우리는 이런 툴에 비용을 지불하고 있죠. 자, dbx는 무료입니다. 하지만 솔직히 무료라는 점이 가장 멋진 부분은 아닙니다.
00:01:15dbx를 실제로 차별화하는 것은 바로 mcp입니다. 코딩 에이전트가 여러분이 저장한 연결을 통해
00:01:21데이터베이스와 직접 통신할 수 있으므로, 모든 내용을 다시 채팅창에 붙여넣을 필요가 없습니다. 다만 한 가지 주의할 점은
00:01:28mcp 서버가 별도의 바이너리라는 것입니다. dbx를 설치한다고 mcp가 설치되지는 않으므로 직접
00:01:35mcp를 설치해야 합니다. 그리고 dbx만 있는 것은 아닙니다. TablePlus도 mcp를 지원하고, DataGrip도
00:01:43올해 여름에 mcp 툴을 추가했습니다. 따라서 여기서 가장 중요한 핵심은 dbx가 자체 mcp 서버를 갖춘 무료 데이터베이스 GUI라는 점입니다.
00:01:51둘 다 설치한다면 말이죠. 워크플로를 빠르게 만들어주는 코딩 툴이 마음에 드신다면 구독해 주세요.
00:01:56계속해서 영상이 업로드됩니다. 자, 이제 Postgres 데이터베이스를 하나 실행하고 URL을 JSON 파일에 붙여넣은 다음
00:02:02연결되었다고 할 수도 있겠죠. 하지만 실제 앱들은 그렇게 생기지 않았습니다. 우리는 이미 앱용 MySQL,
00:02:07세션용 Redis, 이벤트용 Mongo를 가지고 있습니다. 실제 모습은 이렇습니다. 먼저
00:02:13터미널에서 brew install dbx를 실행한 다음 앱을 실행했습니다. 앱을 실행하면 이 인터페이스가 반겨줍니다.
00:02:19이 인터페이스는 나중에 다시 살펴보고, 일반 터미널을 열어 mcp를 설치할 수 있습니다. 일반적인
00:02:25npm 설치 방식으로도 작동하고, Claude를 통해 직접 설치할 수도 있습니다. 저는 여기서 직접 설치하겠습니다. 짠, 정말 간단하죠.
00:02:33그다음 VS Code에서 SQL과 Mongo를 테스트해 볼 파일들을 만들었습니다. 이 컨테이너들을 실행해 두기 위해
00:02:39Docker Compose로 Docker를 실행합니다. 그런 다음 Redis 키를 로드합니다. 이 모든 것은 제가 그냥
00:02:46테스트해 보려고 준비한 것입니다. 자, 이제 MySQL, Redis, Mongo가 준비되었습니다. 완전히 다른 세 가지 엔진이죠.
00:02:54이 모든 것이 잘 연결되는지 테스트하기 위해 기본 데이터가 모두 들어있습니다. dbx가 이 모든 것을 어떻게 처리하는지
00:03:00확인해 봅시다. 이제 dbx 인터페이스에서 새 연결을 추가할 수 있습니다. 첫 번째는 MySQL입니다. 목록에서 MySQL을
00:03:07선택하고 몇 가지 설정을 추가합니다. 이름을 설정하고, 호스트, 포트,
00:03:14사용자 이름, 그리고 제 파일과 일치하는 비밀번호와 데이터베이스 이름을 입력합니다. 테스트를 실행해 보면
00:03:21통과합니다. 저장하면 끝입니다. 연결 하나가 완료되었습니다. 이제 Redis와 Mongo에 대해서도
00:03:27똑같이 진행하겠습니다. 동일한 설정 과정을 거칩니다. 자, 이름, 호스트, 포트를 입력하고 연결합니다.
00:03:35두 가지 모두 테스트하고 저장합니다. 이제 세 개의 연결을 볼 수 있으므로
00:03:40다시 VS Code로 돌아가거나 터미널을 열어 Claude를 실행합니다. mcp 툴을 등록했기 때문에
00:03:46mcp 명령어를 실행하면 거기에 바로 dbx가 나타납니다. 만약 보이지 않는다면
00:03:52다시 등록해야 합니다. 이제 mcp를 통해 dbx와 대화해 보겠습니다. 먼저
00:03:57dbx 툴을 사용하여 내 데이터베이스 연결을 나열해 줘. 새 연결은 추가하지 마라고 입력합니다. 그러면 우리가 연결한
00:04:06모든 항목이 출력됩니다. 좋습니다, 작은 성공이네요. 그다음에는 demo_mysql의 orders
00:04:12테이블을 설명해 줘. 추측이 아니라 데이터베이스의 실제 컬럼 이름을 원해라고 말합니다.
00:04:20자, 이렇게 정상적으로 작동하며 데이터를 출력하는 것을 볼 수 있습니다. 마지막으로 하나 더 해보겠습니다.
00:04:25세 가지 엔진이 모두 작동하는 것을 보고 싶으므로 Claude에게 이렇게 말합니다. demo_mysql에서 shop orders를 쿼리하고
00:04:31결제 또는 배송된 주문에 대한 sku status와 총 센트(total cents)를 보여줘. 그런 다음 demo_mongo events에서 후드티 이벤트를 찾고
00:04:38demo_redis에서 카트 해시를 읽어와. 이렇게 세 가지 명령을 내립니다. 우리가 연결들을
00:04:45서로 연결하고 있죠. 저는 에이전트에 비밀번호를 붙여넣지 않았고, Claude에게 별도의
00:04:51연결 문자열을 주지도 않았습니다. dbx가 이미 그 연결들을 가지고 있고, Claude는 툴만 사용할 뿐입니다. 하지만 이 프로젝트에는
00:04:58아직 조금 더 살펴봐야 할 부분이 있습니다. dbx를 사용해보면 크기가
00:05:04작습니다. 맥에서 일렉트론을 사용하지 않고 wkwebview를 사용하기 때문이죠. 기본적으로 시스템에 이미 있는 브라우저를 빌려 쓰는 것인데
00:05:11이것은 확실한 장점입니다. 하지만 여기서부터 약간 이상해지기 시작합니다. 다운로드 크기가 작다고 해서
00:05:18실행 중인 프로세스까지 작다는 뜻은 아닙니다. 약 20메가바이트라고 하며 일부
00:05:25설치 프로그램은 정말 그 정도 크기입니다. 좋습니다. 하지만 리눅스는 100메가바이트에 가깝고 맥에서는
00:05:31유휴 상태일 때도 실행 프로세스가 수백 메가바이트를 차지할 수 있습니다. 사용자들은 부하가 걸릴 때
00:05:38몇 기가바이트를 차지한다고 보고하기도 했습니다. 따라서 두 가지 모두 사실일 수 있습니다. 다운로드는 작지만
00:05:44반드시 앱 자체가 작다고 할 수는 없으며, dbx를 대체하려는 툴들과 비교할 때 핵심이 될 수 있습니다.
00:05:50DBeaver를 예로 들어보죠. 무료이지만 자바 기반입니다. DataGrip은 유료로 사용할 의향이 있다면 더 나은 소프트웨어이며,
00:05:57이제 DataGrip에도 mcp 툴이 있습니다. Navicat은 기능이 매우 완벽하지만 가격도 그에 맞춰 비쌉니다.
00:06:04그다음 TablePlus가 있는데, 솔직히 이것이 가장 가까운 비교 대상일 것입니다. 이것도 용량이 작고
00:06:11mcp도 지원하며 운영체제 키체인에 비밀 정보를 저장합니다. 따라서 다른 툴들에 비해 dbx의 장점은
00:06:19다른 툴들을 완전히 압살한다는 게 아닙니다. 그런 건 전혀 아니죠. 매력은 훨씬 단순합니다.
00:06:25무료이고 빠르게 열리며, 추가 바이너리를 설치하면 에이전트 워크플로가 이미 준비되어 있어 매우 직관적입니다.
00:06:31하지만 리드미에서는 멋져 보이지만 자세히 들여다보면 실망스러운 또 다른 숫자를 마주하게 됩니다.
00:06:3690개 이상의 데이터베이스. 4월 출시 당시 dbx는 8개를 지원했고, 5월에는 17개, 20, 30, 40, 50개...
00:06:46어떤 의미인지 아실 겁니다. 계속해서 기능을 추가해 나갔죠. 하지만 솔직히 말해서 그 90개의 데이터베이스 엔진 중에서
00:06:52제대로 테스트가 된 것들이며, 실제로 사람들이 얼마나 쓰고 있을까요? MySQL과 Postgres는
00:06:57많은 사용량을 차지하지만, 나머지 것들은... 제발요, 누가 그런 걸 쓰겠습니까? 소수의 사람들이 쓰겠죠.
00:07:03물론 사용자들이 실제로 활발히 사용하고 버그를 제보하는 엔진은 인기 있는 것들, 즉 MySQL, DuckDB,
00:07:10Postgres 정도입니다. 몇 달 된 프로젝트라는 점을 감안하면 솔직히 그 정도는 넘어갈 수 있겠지만,
00:07:17다음 부분은 훨씬 무시하기 어렵습니다. 바로 dbx가 저장된 연결을 저장하는 파일입니다.
00:07:23로컬 SQLite 데이터베이스인 dbx.db에 저장됩니다. 메모장에 가득 찬 비밀번호 텍스트 파일 같은 것은 아니라는 뜻입니다.
00:07:30dbx.db를 SQLite로 제대로 열어보면 secrets 테이블이 있고, secrets 테이블 내부에
00:07:38비밀번호가 평문(plain text)으로 저장되어 있습니다. 데이터베이스 파일 자체도 잠겨있지 않죠. 이것이 6월 12일에 제기된 1081번 이슈이며
00:07:46여전히 버그로 태그되어 있고 열려 있습니다. 꽤 이상한 일이지만, 여기서 더 이상해집니다.
00:07:51중국어 로컬 폴백 같은 문제는 확실히 고칠 줄 알거든요. SSH 터널을 우회하는 mcp 문제도
00:08:01그들이 해결했습니다. 동기화 중에 비밀 정보가 유출되는 문제도 고쳤고요. 즉, 그들은
00:08:07문제를 아주 빠르게 수정해 나가고 있습니다. 하지만 로컬 자격 증명 저장소 문제는 계속 놓치고 있죠.
00:08:12프로덕션 자격 증명을 dbx에 넣으려고 생각 중이라면, 이 부분이 이번 리뷰에서 가장 중요한 부분입니다. 멋진 mcp
00:08:17데모는 비밀번호를 저장하는 장소를 신뢰할 수 있을 때만 의미가 있으니까요. 이건 정말 큰 경고 신호입니다.
00:08:22사람들이 고장난 부분을 찾아 불만을 제기하면 메인이터는 미친 듯이
00:08:28빠르게 움직여 프로젝트를 공개적으로 개선하고 있습니다. 저 dbx.db 파일만 빼고 말이죠. 그러니 이 툴은 알아서 잘 판단해 사용하시고,
00:08:36조사해 보시기 바랍니다. 조만간 패치되기를 바랍니다. 저는 Better Stack의 조시였습니다. 이런 코딩
00:08:41팁과 트릭이 마음에 드신다면 구독해 주시고, 다음 영상에서 뵙겠습니다.

핵심 요약

dbx는 mcp와 무료 지원으로 빠르게 성장하는 데이터베이스 클라이언트이지만, 로컬에 비밀번호가 평문으로 저장되는 심각한 보안 취약점을 안고 있다.

하이라이트

  • 출시된 지 몇 달 만에 1만 8천 개 이상의 스타를 받은 무료 데이터베이스 클라이언트 dbx는 90개가 넘는 데이터베이스 엔진을 지원한다.

  • dbx는 별도의 mcp 서버를 통해 코딩 에이전트와 직접 통신하여 데이터베이스 연결을 관리할 수 있는 기능을 제공한다.

  • 맥 환경에서 실행할 때 유휴 상태에서도 수백 메가바이트의 메모리를 차지하며, 부하가 걸릴 때는 기가바이트 단위로 메모리가 증가한다.

  • 로컬 데이터베이스 파일인 dbx.db 내부의 secrets 테이블에 데이터베이스 비밀번호가 평문으로 저장되는 심각한 보안 결함이 존재한다.

  • 6월 12일에 제기된 비밀번호 평문 저장 이슈는 여러 차례 업데이트가 진행되는 동안에도 여전히 해결되지 않고 열려 있다.

타임라인

dbx의 급부상과 주요 기능

  • dbx는 출시된 지 몇 달 만에 1만 8천 개 이상의 스타를 기록한 무료 데스크톱 데이터베이스 클라이언트이다.
  • 리드미에 따르면 MySQL, Postgres, SQLite, Redis, Mongo 등을 포함해 90개 이상의 엔진을 지원한다.
  • 별도의 mcp 서버를 설치하면 코딩 에이전트가 저장된 연결을 통해 데이터베이스와 직접 통신할 수 있다.

기존의 유료 데이터베이스 클라이언트인 Navicat, DataGrip, TablePlus 등과 달리 dbx는 완전 무료로 제공되며 코딩 에이전트 워크플로를 지원하여 인기를 끌고 있다. 다만 mcp 서버는 별도의 바이너리로 직접 설치해야 한다.

다중 데이터베이스 연결 및 에이전트 테스트

  • 터미널에서 brew 명령어로 설치한 뒤 MySQL, Redis, Mongo 등 서로 다른 세 가지 엔진을 연결할 수 있다.
  • Claude 에이전트에 mcp 툴을 등록하여 별도의 비밀번호 입력 없이 데이터베이스를 쿼리할 수 있다.
  • 에이전트를 통해 데이터베이스 연결 목록 조회, 테이블 스키마 확인, 다중 엔진 데이터 쿼리 등의 작업이 가능하다.

실제 개발환경과 유사하게 Docker Compose로 여러 컨테이너를 실행하고 dbx 인터페이스에서 각 데이터베이스 연결을 설정한다. 이후 Claude를 통해 연결을 제어하며 별도의 연결 문자열 없이도 에이전트가 원활하게 데이터를 조회한다.

리소스 사용량과 데이터베이스 지원 범위의 실체

  • 맥에서 wkwebview를 사용하여 다운로드 용량은 작지만, 실행 중인 프로세스는 수백 메가바이트에서 기가바이트까지 차지한다.
  • 리드미에 명시된 90개 이상의 데이터베이스 엔진 중 실제 대다수의 사용자가 활발히 사용하는 것은 MySQL과 Postgres 등 소수에 불과하다.

다운로드 크기가 작다는 장점이 실제 실행 프로세스 메모리 사용량까지 작다는 것을 의미하지는 않는다. 또한 다양한 엔진을 지원한다고 하지만 실제로는 인기 있는 소수 엔진을 중심으로 버그 제보와 사용이 이루어진다.

치명적인 보안 취약점과 결론

  • 로컬 SQLite 파일인 dbx.db의 secrets 테이블 내부에 데이터베이스 비밀번호가 평문으로 저장된다.
  • 6월 12일에 제기된 해당 보안 이슈는 다른 버그들이 빠르게 패치되는 동안에도 여전히 해결되지 않고 있다.

UI와 mcp 기능이 훌륭하더라도 프로덕션 자격 증명을 평문으로 저장하는 결함은 심각한 경고 신호이다. 메인이터가 다른 버그들을 빠르게 수정하는 것과 대조적으로 자격 증명 저장소 문제는 남아있으므로 주의가 필요하다.

커뮤니티 글

아직 글이 없습니다. 이 영상에 대한 첫 번째 글을 작성해 보세요!

이 영상에 대해 글쓰기