[MSSQL] M1 맥북에 MSSQL 설치 및 Azure Data Studio 활용하기 | dasfef

2023.08.05

개인 기록용 입니다 :) 오타, 수정 등 피드백 환영


M1 맥북은 시작함에 어려움을 많이 겪는다 이번에 실습을 진행하면서 MSSQL을 처음 써봤는데 편리한 점이 있는 반면 불편한 점도 여럿 있는 것을 느꼈다. 필자가 경험했던 프로세스를 축약하자면 [1] Docker 설치 Docker가 뭐냐? 부터 시작했다 어렸을 적 CD를 많이 구워본 터라 어느정도 원리가 이해는 갔다 예전 경험을 토대로 예를 들면 일종의 iso 이미지 파일을 읽어서 해당 파일 안에 있는 내용을 읽어주는 툴이다. 지금까지 진행했던 프로세스로는 이렇게 이해하는 것이 빠른것 같다. 더 자세하고 세부적인 사항은 원문 정보로 확인하시길..ㅎㅎ [2] Azure Data Studio 다운로드 [3] Docker pull [4] Docker run [5] Azure Data Studio 에서 MSSQL 접속 [6] 실행 등의 큰 순서로 진행을 했고, 하면서 겪었던 여러 오류와 방법 등을 기록해두려 한다. ** 제공 받은 백업파일(*.bak)이 16버전(현시점에서 MSSQL 2022버전)에서 만들어졌고, azure-sql-edge 이미지는 15버전이다 따라서 Docker 내의 이미지(SQL Server)를 16버전인 mssql/server로 업그레이드 해야 하는데 스택오버플로우, 깃허브 등 자세한 내용을 제공하지 않고 그저 M1버전을 내달라고 하는 정보만 파악되어 직접 기록하려 한다. 1. Docker 설치 M1 맥북에서의 Docker 설치는 두가지 방법을 제시한다. 1) 직접 링크에서 dmg 파일 다운로드 후 실행 2) homebrew 를 통한 다운로드 필자도 brew를 활용하고 있어서 편리함도 있지만 간혹 brew 때문에 오류나는 것들도 있어서 실행파일을 다운받을 수 있으면 다운로드 하여 진행하려고 한다 여기에서는 1번 방법을 제시하며, brew를 통한 설치는 다른 정보를 참고 바랍니다. 링크 접속 후 다운로드 Docker 공식 홈페이지 위 링크로 접속하여 파일을 dmg파일 다운로드 해당 파일로 설치를 진행한다(설정은 모두 기본값으로 진행함) 설치가 완료되었으면 터미널을 열어 Docker가 잘 잡히는지 확인한다 [ $docker --version ] 잡히지 않는다면 본인이 쓰고 있는 shell 에서 환경변수를 잡아줘야 한다 필자는 bash 를 쓰고 있기 때문에 bash_profile 내에서 export 해주었다 [ $vi ~/.bash_profile ] [ i를 눌러 insert 모드 ] [ export PATH=$HOME/.docker/bin:$PATH ] [ esc 후 :wq 를 작성 후 엔터하여 저장하여 닫기 ] 2. Azure Data Studio 다운로드 Azure Data Studio 다운로드 해당하는 zip 파일 다운로드 (설치 파일이 아닌 실행 파일임) 3. Docker pull 터미널을 열어 pull 하고 싶은 이미지 진행 (* 필자처럼 16버전에서 생성된 백업 파일을 복원하거나 특별한 경우가 아닌이상 3-1로 진행해도 무방) [3-1] azure-sql-edge [ $docker pull mcr.microsoft.com/azure-sql-edge ] [3-2] mssql/server [ $docker pull mcr.microsoft.com/mssql/server ] 위 명령어는 가장 최신 버전을 pull 할것이고 [ $docker pull mcr.microsoft.com/mssql/server:2022-latest ] 위 명령어는 2022버전 중 가장 최신 버전을 pull 할것이다 위 과정이 끝났다면 아래 이미지처럼 Docker 를 실행하여 Images 목록에 잘 pull 되었는지 확인한다 4. Docker run pull 된 이미지를 활용해 Docker 에서 run 해주어야 한다 Docker 는 별개의 드라이브에서 실행되는 것처럼 가상 환경을 만들어 주는 것이기 때문에 Docker 로 들어가서 내 맥북에 있는 폴더에서 어떤 파일을 가져오고 싶다 하면 찾을 수 없다 때문에 본인은 -v 명령을 활용해 볼륨을 만들어주고 Docker 내부에 있는 폴더로 매핑해 주었다 (필요없다면 -v 명령 생략 가능) [4-1] azure-sql-edge 이미지 활용할 경우 [ docker run -v 연동시키고픈/내/맥북폴더:/var/opt/도커내폴더 --cap-add SYS_PTRACE -e 'ACCEPT_EULA=1' -e 'SA_PASSWORD=비밀번호' -p 1433:1433 --name 컨테이너이름 -d 이미지이름(mcr.microsoft.com/azure-sql-edge) ] [4-2] mssql/server 이미지 활용할 경우 M1에서는 mssql/server 이미지를 그냥 run할 경우 다음과 같은 오류가 발생한다 WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested 따라서 기존의 azure-sql-edge 를 run 할때와 다른 옵션을 덧붙여 진행한다 [ $docker run -v 연동시키고픈/내/맥북폴더:/var/opt/도커내폴더 --cap-add SYS_PTRACE -e 'ACCEPT_EULA=1' -e 'SA_PASSWORD=비밀번호' -p 1433:1433 --name 컨테이너이름 -it -d --platform linux/amd64 이미지이름(mcr.microsoft.com/mssql/server) ] --platform 뒤의 명령으로 어떤 플랫폼으로 진행시킬 것인지 명시해주어야 한다. Docker run 이 모두 완료되었으면 (맞지 않는 이미지를 pull 했을 경우 해당 단계에서 자동으로 다운로드 진행할 수 있음) 아래와 같이 컨테이너가 작동하고 있는지 확인할 수 있다. 5. Azure Data Studio 실행 필자는 알집을 풀고 실행 파일을 Dock 으로 옮겨 두었다 6. MSSQL 접속 위 이미지와 같이 Azure Data Studio 창이 뜨고 아무것도 뜨지 않는다면 New Connection 혹은 왼쪽 위의 칸을 눌러 데이터베이스 접속 시도를 한다 그러면 오른쪽과 같은 창이 뜨고 아래 네모 영역에 접속할 내용을 적어주면 된다 [ Server: localhost ] [ Authentication type: SQL Login ] [ User name: SA ] [ Password: ] 그리고 접속을 하면 완료 7. TEST 간단하게 데이터베이스 하나를 만들어주면 왼쪽의 영역에 내가 만든 데이터베이스가 만들어진다. [부록]데이터파일(*.bak) 복원 docker run 명령을 시행할 때 내 맥북 폴더와 Docker 내의 폴더를 맵핑했다면 내 맥북 폴더 내의 파일들을 볼 수 있고 이를 통해 복원시킬 수 있다

여기서 내가 겪었던 오류가 있다 제공된 백업 파일이 16버전에서 배포된 것이고 나는 편하게 azure-sql-edge 이미지를 썼는데 이 azure-sql-edge 이미지는 15버전이다

버전이 맞지 않아 백업 파일을 불러올 수 없었고

SQL server 를 업그레이드 해야 했다

하지만 지속적으로 mssql/server 이미지로 Docker run을 해도 –platform 옵션으로 linux/amd64를 지정해도 컨테이너에서 약 5초정도 run을 하다가 뚝 끊기는 현상이 반복됐다

오류 로그를 살펴보면서 맞지 않는 부분을 하나하나 고치고 있었는데 눈에 띄는 녀석이 있었다

관리자 비밀번호가 충분히 복잡하지 않으니 좀더 복잡하게 만들어라 라는 뜻이었다

대문자 포함 / 특수문자 / 8자 이상

으로 비밀번호를 설정해주니 잘 실행되었다

Docker 를 이해하고 오류를 찾는데 이틀이 걸렸다.. 그래도 해결돼서 다행이다..!