본문 바로가기
개발/docker

docker에서 mssql 설치

by 가시죠 2022. 8. 21.
반응형

도커에서 mssql설치, 데이터베이스추가, 계정추가 및 권한설정

환경 : windows 11, powershell


 

1. mssql 버전별 이미지 가져오기 pull

## mssql-2017 를 설치할 경우
docker pull mcr.microsoft.com/mssql/server:2017-latest

## mssql-2019 를 설치할 경우
docker pull mcr.microsoft.com/mssql/server:2019-latest

## mssql-2022 를 설치할 경우
docker pull mcr.microsoft.com/mssql/server:2022-latest

사용가능모든 이미지 확인 링크(mssql-server Docker 허브 페이지)

2. 가져온 이미지 확인 images

docker images | findstr mssql

| findstr 명령으로 mssql 문자열이 들어간 건만 조회

3. 실행 run

docker run `
-e "ACCEPT_EULA=Y" `
-e "MSSQL_SA_PASSWORD=<복잡한패스워드8자리이상>" `
-p 1433:1433 `
--name mssql2019 `
--hostname mssql2019 `
-d `
mcr.microsoft.com/mssql/server:2019-latest

ps. 다음줄로 넘기기 위해 ` 를 사용 (powershell)

ps2. 포트 오류가 날경우 (로컬에 1433 포트가 사용중이라는..) -p 1433 만 입력하면, 알아서 로컬 포트를 지정해줌 (하지만.. 컨테이너 실행시 포트가 무작위로 변경됨)

매개변수 설명
-e "ACCEPT_EULA=Y" 최종 사용자 사용권 계약 수락
-e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" 8자 이상 SA 권한 패스워드
-p 1433:1433 로컬환경의 TCP 포트와  컨테이너(docker)의 TCP 포트 매핑
--name mssql2019 컨테이너 이름 지정 (없을 경우 임의의 값으로 자동 세팅)
--hostname mssql2019 컨테이너 호스트 이름 지정(없을 경우 임의의 값으로 자동 세팅)
-d 백그라운드에서 컨테이너 실행
mcr.microsoft.com/mssql/server:2019-latest 컨테이너 이미지 이름

4. 생성된 컨테이너 조회 ps

docker ps -a

status열에 up 상태가 표시되어야 정상 실행.

port 열에 로컬포트와 컨테이너 포트 매핑 확인.

5. 필요한 경우 SA 패스워드 변경 exec -it

docker exec -it mssql2019 /opt/mssql-tools/bin/sqlcmd `
-S localhost -U SA -P "<생성시입력한SA패스워드>" `
-Q "ALTER LOGIN SA WITH PASSWORD='<새로운SA패스워드>'"

docker exec -it 명령을 사용하여 실행 중인 컨터이너 내의 sqlcmd명령으로 패스워드변경 쿼리실행

6. SQL Server컨테이너 내부로 들어가기 exec -it

docker exec -it mssql2019 "bash"

docker exec -it 명령으로 bash 를 실행

7. 새 데이터베이스 만들기 (컨테이너 내부 bash 내에서 실행)

/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "<SA패스워드>"
## 간혹 오류가 날 경우 패스워드 부분은 제외하고 입력 후 다음줄에 별도로 입력해준다.
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA
Password: "<SA패스워드>"

ps. 간혹 오류가 날경우 패스워드 부분은 제외하고 입력 후 다음줄에 패스워드를 입력해야 할때도 있다.

1> 이라고 표시되면 정상 접속된 상태

 

## 데이터데이터를 생성
CREATE DATABASE hitomisDB;
## 명령문 이후 새로운 줄에 go 입력해야 실행됨
GO

## 생성된 데이터 베이스 조회
SELECT NAME FROM SYS.DATABASES;
GO

## collate 변경 (필요한 경우)
ALTER DATABASE
hitomisDB
COLLATE
Korean_Wansung_CI_AS;
GO

collate 변경시 오래걸리거나 오류가 발생할 경우 db툴 같은걸로 접속해 있는 연결을 종료하고 실행해아함

8. 생성된 데이터베이스에 테이블 생성, 데이터 삽입, 조회 테스트

## 데이터베이스 변경
use hitomisDB;

## 테이블생성
create table testTable (id int, name nvarchar(50), qty int);

## 데이터 입력
insert into testTable values (1, 'hitomis', 10);
insert into testTable values (2, 'kurumi', 20);

## go명령으로 실행
go

## 데이터 조회
select * from testTable;
go

9. 사용자계정 및 권한 할당

## 데이터베이스 변경
use hitomisDB;
go

## 로그인 계정 생성
create login <로그인계정> with password='<패스워드>';
go
create user <로그인계정> for login <user>;
go

## 계정권한할당
exec sp_addrolemember 'db_owner', <user>;
go

10. 데이터베이스툴(ex. dbeaver)로 로그인하여 확인

반응형

'개발 > docker' 카테고리의 다른 글

docker 파일 복사 전송 가져오기  (0) 2022.08.22
docker 컨테이너에 root로 접속하기  (0) 2022.08.21
docker centos systemctl 문제  (0) 2021.01.18
docker-compose.yml  (0) 2021.01.18

댓글