[Docker] MSSQL 컨테이너 생성과 테스트 그리고 계정 생성 (MSSQL Docker For MacOS)
맥북에서 개발을 Visual Studio로 개발을 하다가, MSSQL을 설치해야하는 일이 발생했다.
하지만 MSSQL은 macos에 설치를 할 수 없다.
어차피 단순 로컬 개발 목적이고, 이후 필요에 따라서 제거를 하면 좋을 것 같다는 생각에
Docker 컨테이너로 관리하기로 하였다.
이미지 받아오기 (MSSQL)
sudo docker pull mcr.microsoft.com/mssql/server:2019-latest
MSSQL의 다양한 이미지를 확인하고 싶다면, 아래 사이트를 참고하시기 바랍니다.
https://hub.docker.com/_/microsoft-mssql-server
컨테이너 기동
예제를 위해서 다음과 같은 계정 정보를 사용하였습니다.
docker run --name SQLServer -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=SQLServer123!' -e 'MSSQL_PID=Express' -p 1433:1433 -d mcr.microsoft.com/mssql/server:2019-latest
MSSQL 도커 명령어 옵션
더보기
옵션 |
설명 |
ACCEPT_EULA |
최종 사용자 사용권 계약에 대한 내용입니다. 단순하게 Y로 하면 문제가 없을 것 같습니다. |
SA_PASSWORD |
SA 사용자 암호를 설정합니다. (최신 버전의 경우, MSSQL_SA_PASSWORD라고 설정이 되어야 합니다) |
MSSQL_PID |
SQL Server 버전 또는 제품에 대한 키를 설정하는 부분입니다. 가능한 값은 아래와 같습니다.
- Evaluation
- Developer
- Express
- Web
- Standard
- Enterprise
- 제품 키
|
도커 명령어 옵션 (사용한 명령어)
더보기
옵션 |
설명 |
-p |
포트 맵핑 (컨테이너를 동작 시킨 포트 : 컨테이너 내부 포트) |
-d |
데몬으로 동작하도록 설정 (백그라운드 실행) |
컨테이너 확인
# SQLServer Container 접속
ojaeseong@ojaeseocBookPro ~ % docker exec -it SQLServer /bin/bash
# 아래 명령어로 확인 (연결 확인)
mssql@48be467e8534:/$ /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "SQLServer123!"
# MSSQL 바이너리 폴더
mssql@48be467e8534:/$ ls -rtl /opt/mssql/
# MSSQL 로그 폴더
mssql@48be467e8534:/$ ls -rtl /var/opt/mssql/log/
데이터베이스 연결 확인
맥북을 사용 중이기 때문에, (SSMS) SQL Server Management Service는 사용하지 못합니다.
이미 깔려있는 Dbeaver를 사용하여 진행하였습니다.
MSSQL 사용자 생성 명령어
Dbeaver의 GUI상으로는 MSSQL의 사용자 생성을 제대로 제공하지 못했습니다.
(아무래도 MS에서 만든 SSMS에 비해서 완벽하지는 못했어요 😭)
어쩔 수 없이, 질의문으로 처리하였습니다.
-- coreuser : 권한을 받을 대상 (사용자 계정)
-- CodeFirstDB : 권한을 부여할 데이터베이스
-- Create User
CREATE LOGIN coreuser
WITH PASSWORD = 'coreuser123!',
DEFAULT_DATABASE = CodeFirstDB
-- DB Move
use CodeFirstDB
GO
CREATE USER coreuser FOR LOGIN coreuser
WITH DEFAULT_SCHEMA=CodeFirstDB;
-- Grant Creating Table
GRANT CREATE TABLE TO coreuser;
-- Grant Schema Opt
GRANT CONTROL ON SCHEMA::dbo TO coreuser;