📚 들어가기


더보기

database version : mysql 8.0.13

tool : dbeaver, mysql workbench

Synology nas : DS224+

서론

깃허브를 꾸미면서 문뜩 내 개인 프로젝트들을 누구나 접속 가능하도록 배포를 해보고 싶다라는 생각이 들었다 토이 프로젝트들 중 하나는 pythonaniwhere 를 사용해서 배포 중이지만 6개월 마다 갱신을 해야하며 유지보수가 생각보다 귀찮았다

 

그렇다고 AWS나 GCP, 네이버 클라우드를 이용하는건 금전적으로 감당이 안될거라는걸 전에 수업을 들으면서 알게 되었다 (로드밸런싱 연습한다고 한달 서버 유지한게 10만원이 넘는 가격이 나왔다 GCP 기준)

AWS는 프리티어를 사용했지만 알고있기론 AWS가 더 비싼걸로 알고 있다

 

한마디로 배보다 배꼽이 더 커지는 상황이 발생 ㅡㅅㅡ;

 

무료나 작은 돈을 내고도 배포할 수 있는 환경을 갖춘 다른 호스팅 서비스를 제공하는 업체도 많지만 나는 내 개인 서버를 써보고 싶어서 시놀로지 나스를 구입 처음 세팅하는데 애를 먹었지만 세팅을 완료하고 난 후 처음 해본게 데이터베이스 연결이였다

 

👨🏻‍💻 사용방법


📌 Doker

 

Docker(Container Manager) 레지스트리에서 mysql 검색 후 별이 가장 많은 것을 선택 후 다운로드

 

원하는 mysql 버전 선택
필자는 8.0.13 버전으로 다운로드 했다

 

이미지가 생성 완료되면 실행 한다

 

실행을 누르면 세팅을 하라고 나오는데 크게 건드릴 것 없이 컨테이너 이름만 따로 세팅하고 다음 눌렀다

 

이렇게 고급 설정으로 넘어온다 처음부터 천천히 세팅해보겠다

 

포트 입력이 안 돼 있는걸 입력해줍니다

 

 

Docker 디렉토리에 mysql 폴더를 생성해주고 선택 해 준 다음 /mysql 맵핑 해줬다

 

환경 변수 설정이다
+추가 를 클릭하여 4개를 생성해준다
생성할 내용은 아래와 같다

MYSQL_DATABASE = 사용할 데이터베이스 명을 입력한다
MYSQL_USER = 사용할 데이터베이스 유저 아이디를 입력한다
MYSQL_PASSWORD = 사용할 데이터베이스 유저 패스워드를 입력한다
MYSQL_ROOT_PASSWORD = MYSQL에서는 ROOT 계정은 초기에 ID는 ROOT 로 설정 돼 있고 비밀번호만 설정하면 된다 그래서 ROOT 계정 패스워드만 생성해준다

그 외에는 다른 세팅을 건드리지 않고 기본으로 돼 있는 세팅으로 사용해준다

다음 클릭! 후 자신이 세팅한 값이 맞는지 확인 후 완료를 클릭하여 컨테이너를 실행해준다

 

정상적으로 컨테이너가 실행되는걸 확인 할 수 있다

 

📌 포트포워딩

 

필자는 외부에서도 포트포워딩을 편하게 하고 싶어서 외부 액세스에 라우터 구성을 이용하고 있다

생성을 클릭 -> 내장 응용 프로그램 -> Docker mysql을 클릭하여 완료를 눌러 포트포워딩 해준다

 

보안을 위해 외부 접속 포트번호를 바꿔주면 좋다

공유기로 하는 경우 이와 같은 방법으로 포트포워딩 시켜준다

 

📌 DBeaver 연결

 

왼쪽 상단에 있는 새 데이터베이스 연결을 클릭해준다 (ctrl + shift + n)

 

mysql을 검색하여 클릭

 

① 외부에서 접속 가능한 IP나 DDNS로 설정한 나스 서버 도메인 입력
② 포트포워딩 시 사용했던 외부 접속 포트번호 입력
③ Docker 파트에서 입력했던 MYSQL_DATABASE 변수에 입력했던 값 입력
④ 유저에게 권한을 주기 위해 ROOT 계정 먼저 입력
⑤ MYSQL_ROOT_PASSWORD 변수에 입력했던 값 입력
⑥ Test Connection 클릭

 

정상적으로 연결되는걸 확인할 수 있다

혹시라도 allowPublicKeyRetrieval 오류가 뜨면 아래 더보기를 클릭해보자

 

더보기

 

allowPublicKeyRetrieval = true

useSSL = false

 

이 2개를 바꿔준다

Driver properties에 없는 경우 

User Properties 에 새롭게 추가해준다

create user '새로운사용자'@'나스 도메인' IDENTIFIED BY '비밀번호';

GRANT ALL PRIVILEGES ON *.* TO '새로운사용자'@'호스트';

 

root가 아니라 user에서 사용할 계정을 만든 다음 권한을 준다

권한을 주었으니 다시 처음으로 돌아가서 유저로 접속하면 문제없이 데이터베이스를 사용 가능하다

 

📌 Mysql Workbench

 

포맷에 맞춰서 입력하고 test Connection 클릭

 

연결이 완료된걸 확인할 수 있다

 

👍 레퍼런스


 

 

dailylifecoding

 

[DBeaver] MySQL 연결 시 "Public Key Retrieval is not allowed" 해결하기

이번에 docker 로 MySQL Container 를 하나 띄우고, DBeaver 로 연결하려고 하니 Public Key Retrieval is not allowed 라는 문구가 나오고 연결이 안 된다! 해결법은...?

velog.io

leekm0912

 

[Synology NAS] docker에 mysql 설치해서 외부에서 사용하기 + Lost connection to MySQL server at 'reading initial comm

1. docker 설치 패키지 센터에서 docker 설치 2. docker에서 mysql 설치 docker에서 레지스트리 탭 선택 후 mysql 검색. 더블클릭해서 원하는 버젼 선택 후 설치. 나는 latest 하니까 알수없는 이유로 실행이 안

leekm0912.tistory.com