DBeaver로 MySQL 다뤄보기 (on MAC M1)
오랜만에 Dev Tool 카테고리에 포스팅을 해본다. (ㄷㄱㄷㄱ) 미리 언급을 드리자면 오로지 디비버(DBeaver)를 세팅하는 방법만 다룬다. 오직 경험기를 남기고 이후에 동일한 세팅을 해야할 때 참고하기 위함으로 포스팅을 남긴다. (개념, 고찰 등은 없음) 아래 케이스에 해당하는 분 정도만 유익할 것으로 보인다.
- 맥북 M1으로 워크벤치 설치를 실패하신 분
- 워크벤치의 "Standard TCP/IP over SSH" 세팅을 디비버에서 하고 싶은 분
- Key 파일(*.pem)로 DB에 접근하고 싶은 분
- 디비버 세팅 중 에러 케이스를 확인하고 싶으신 분
- 그냥 디비버 캐릭터가 보고 싶으신 분
귀여운 비버가 웃으면서(웃는거 맞지?) 맞이해주는 데이터베이스툴 DBeaver. 나도 처음부터 DBeaver를 사용하려던 것은 아니었다. 많은 분들이 MySQL을 사용할 때처럼 나 역시도 워크벤치(Workbench)를 사용할 것이다. 그래서 나도 사용하려고 했다. 그런데...
🤪 응. M1은 안돼
최근에 소속된 회사에서 지급받은 맥북 M1 모델은 워크벤치를 사용할 수 없었다. 나만 그런가 했는데 나차럼 M1 모델을 사용하는 직장동료도 마찬가지라고 하더라. 그래서 무엇을 쓰는지 확인해보니 그때 만난게 DBeaver였다. 그래서 DBeaver를 설치해 보았다. 재도전!!!
히히히 된다. 히히히. 기분이가 좋다.
자, 이제 미리 세팅된 Workbench의 세팅을 기준으로 디비버에서도 세팅을 해보자. 내가 소속된 조직은 아래와 같은 MySQL Workbench의 "Standard TCP/IP over SSH" 세팅으로 DB를 다루었다. 단순히 세팅을 다루는 것에만 초점을 맞추는 포스팅이기에 Hostname이 뭔지, Server Port가 뭔지는 다루지 않겠다.
이제 진짜 디비버에서 MySQL을 다루기 위한 세팅을 해보자.
- 왼쪽 상단의 콘센트와 플러스 마크가 합쳐진 아이콘을 클릭
- MySQL을 선택
- 상단 탭에서 "SSH" 탭을 선택
- "Use SSH 터널" 체크박스 클릭
- Host/IP 입력 (워크벤치 기준 SSH Hostname에 해당)
- User Name 입력 (워크벤치 기준 SSH Username에 해당)
- pem 파일로 된 Key를 적용할 예정이기에 Authentication Method는 "Public Key"로 설정
- Private Key 입력란에 pem 파일 첨부 (워크벤치 기준 SSH Key File에 해당)
- Test tunnel configuration을 클릭해서 SSH가 정상적으로 세팅되었는지 확인
- Success인지 Successful인지가 팝업 형태로 나타나야 함 (요걸 캡처하는걸 깜박했네. 🤪헤헷)
- 이제 상단의 Main 탭에서 입력을 할 차례
- Serveer - Server Host 입력 (워크벤치 기준 MySQL Hostname에 해당)
- Port 입력 (워크벤치 기준 MySQL Server Port에 해당)
- Username 입력 (워크벤치 기준 Username에 해당)
- Password 입력 (워크벤치 기준 Password에 해당)
- (옵션) Save password locally 선택
- 하단의 Test Connection 클릭
- Success인지 Successful인지가 나타나야 함 (요것도 캡처하는걸 깜박했네. 🤫쉿)
마지막으로 "완료" 버튼을 누르면 세팅 완성~ 물론 입력을 제대로하고 2번의 테스트가 정상적으로 수행되어야 진짜 우리가 원하는 완료가 된다.
💰 Tip : 샘플 데이터베이스
디비버에서는 샘플 데이터베이스를 제공한다. 아마 처음 설치를 하고 나면 아래와 같은 팝업창을 볼 수 있을 것이다. 이때 "예"를 누르면 샘플 데이터베이스가 생성된다. 이 DB를 통해서 Tool을 익숙하기 위한 여러가지 연습을 할 수 있다. 여러 개의 테이블과 여러 형태의 데이터가 있기 때문에 연습하기 좋을 것이다.
🤯 TIP : Error가 나타나는 상황들
세팅을 하던 중에 Main탭 - Server Host를 잘못 입력을 하면 아래와 같은 메시지가 나타난다. (경험담 1) 물론 정상적인 정보가 무엇인지 다시 확인해야 한다.
Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.
또한 Main탭 - Password를 잘못입력한 경우에는 아래와 같이 나타난다. (경험담 2)
Access denied for user 'root'@'***.***.***.***' (using password: YES)
이건 경험담은 아니지만 아래와 같은 메시지가 나타날 수도 있다.
Permission denied (publickey).
이 경우에는 pem 파일의 쓰기 권한 변경이 필요하다. (해결책)
chmod 400 mykey.pem
🤔 TIP : DB를 오직 읽기 권한으로만 사용하고 싶다면?
물론 해당 계정에 읽기 권한만 주면 되기도 하지만 Tool에서도 설정을 할 수 있다. 이것은 계정을 그렇게 만든다기 보다는 해당 툴에서 원하는 DB에 권한을 강제한다는 느낌으로 사용하면 된다.
위에서 보는 것처럼 권한 부여를 하고자 하는 DB를 선택해서 "Edit Connection"을 클릭한다. 아래와 같은 화면이 나타나면 General을 클릭하고 Security란에 Read-only connection 체크박스를 클릭하면 해당 DB를 오직 읽기 권한으로만 사용하게 된다.
만약 이 권한이 부여된 상태에서 테이블이라도 만들려고 한다면 아래와 같은 메세지가 나타나며 생성이 되지 않음을 확인할 수 있다.
SQL Error [8]: [SQLITE_READONLY] Attempt to write a readonly database (attempt to write a readonly database)
🤔 TIP : 생성한 테이블이 보이지 않는다면??
테이블을 생성했는데(CREATE TABLE 테이블명) 왼쪽 프로젝트에서 내가 만든 테이블이 나타나지 않는다면? 프로젝트 - 테이블을 선택하고 오른쪽 하단의 새로고침을 클릭하면 생성한 테이블이 나타나는 것을 확인할 수 있다.
여담 : 디비버 웃는거. 좀 비열해 보여.