반응형
도커에서 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 |
댓글