일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 머신러닝기초
- 스마트컨트렉트프록시
- 컨트렉트 동일한 함수이름 호출
- 스마트컨트렉트테스트
- chainlink 설명
- ethers type
- rust 기초
- vue기초
- ethers
- ethers v6
- nest.js설명
- git rebase
- Vue
- 체인의정석
- 러스트 기초 학습
- 티스토리챌린지
- 스마트컨트렉트 함수이름 중복 호출
- ethers websocket
- 프록시배포구조
- 러스트 기초
- 러스트기초
- Vue.js
- multicall
- ambiguous function description
- SBT표준
- 컨트렉트 배포 자동화
- ethers typescript
- 오블완
- 스마트컨트렉트 예약어 함수이름 중복
- 스마트 컨트렉트 함수이름 중복
- Today
- Total
체인의정석
docker에 DB 설치하기 (2) - MS SQL 본문
oracle 설치 후 ms sql도 도커로 똑같이 설치 시작!
이 블로그를 보고 따라해보기로 했다.
https://oingdaddy.tistory.com/285
(base) lambda256@ethan ~ % docker pull mcr.microsoft.com/mssql/server:2019-latest
2019-latest: Pulling from mssql/server
a31c7b29f4ad: Extracting [===============================================> ] 27.13MB/28.57MB
또 기다려 준다.
비밀번호 1234, 이름 mssql로 테이블 생성 완료
(base) lambda256@ethan ~ % docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=1234’ -p 1433:1433 --name mssql -d mcr.microsoft.com/mssql/server:2019-latest
quote>
그러나 이 뒤로 진행이 되지 않는다.
mac을 위한 설치 방법으로 다시 진행해보도록 하겠다.
https://www.twilio.com/blog/using-sql-server-on-macos-with-docker
(base) lambda256@ethan ~ % docker run -d --name sql_server -e 'ACCEPT_EULA=Y' -e '1234' -p 1433:1433 mcr.microsoft.com/mssql/server:2019-latest
위 명령어로 실행을 하니 진행이 되었다.
근데 다시 살펴보니 비밀번호 형식이 잘못되었다.
초기화를 먼저 해주고
docker ps -a
docker stop sql_server
docker rm sql_server
다시 SA_PASSWORD를 넣어서 띄워준다.
(base) lambda256@ethan ~ % docker run -d --name sql_server -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=1234' -p 1433:1433 mcr.microsoft.com/mssql/server:2019-latest
블로그에 친절하게 파라미터 설명도 써져 있어서 한번 읽고 넘어갔다.
- -d will launch the container in "detached" mode and is optional. This means that containers will run in the background and you can close the terminal window.
- --name sql_server will assign a name to the container and is optional, but recommended for easier management!
- -e will allow you to set environment variables:
- 'ACCEPT_EULA=Y' SQL Server requires the user to accept the "End User Licence Agreement" or EULA. The Y here indicates acceptance.
- 'SA_PASSWORD=someThingComplicated1234' is a required parameter for SQL Server. This is the System Administrator password. See the note below on password strength.
- -p 1433:1433 will map the local port 1433 to port 1433 on the container. Port 1433 is the default TCP port that SQL Server will listen on.
-d는 백그라운드에서 돌리는것, --name은 도커 컨테이너 이름, accept_eula 는 라이선스 동의, sa_password 는 sql 서버의 비밀번호 파라미터, -p 포트번호:포트번호는 포트번호 설정
이제 테이블 생성을 테스트 하기 위하여 sql cli tool을 써보도록 하겠다.
sql-cli 먼저 설치 진행
(base) lambda256@ethan ~ % npm install -g sql-cli
그런 후에 아까 설정한 SA_PASSWORD값을 넣고 로그인 시도 (여기선 1234가 비밀번호였다.)
(base) lambda256@ethan ~ % mssql -u sa -p 1234
Connecting to localhost...
Error: Failed to connect to localhost:1433 - connect ECONNREFUSED 127.0.0.1:1433
비밀번호가 틀린건 아닌데 , 왜이럴까.. ㅠㅠ
이럴 땐 도커 프로세스를 확인해 본다.
docker ps -a
docker logs -f mssql
도커가 꺼져있다. 무슨 에러인지 위의 명령어를 쳐서 로그를 살펴보면
2021-08-09 06:27:27.71 spid12s Clearing tempdb database.
2021-08-09 06:27:27.72 spid25s ERROR: Unable to set system administrator password: Password validation failed. The password does not meet SQL Server password policy requirements because it is too short. The password must be at least 8 characters..
2021-08-09 06:27:27.73 spid25s An error occurred during server setup. See previous errors for more information.
2021-08-09 06:27:27.73 spid25s SQL Trace was stopped due to server shutdown. Trace ID = '1'. This is an informational message only; no user action is required.
비밀번호가 너무 짧으니 8자 이상으로 하라고 한다. mssql에는 비밀번호 글자가 8개 이하면 에러가 난다고 하니까 비밀번호를
qwer12345로 바꿔봐야겠다.
일단 이미 만든 db는 비밀번호가 1234니까 지워주고 다시 띄우자
(base) lambda256@ethan ~ % docker run -d --name sql_server -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=qwer12345' -p 1433:1433 mcr.microsoft.com/mssql/server:2019-latest
다시 에러가 나서 보니
2021-08-09 06:31:44.12 spid26s ERROR: Unable to set system administrator password: Password validation failed. The password does not meet SQL Server password policy requirements because it is not complex enough. The password must be at least 8 characters long and contain characters from three of the following four sets: Uppercase letters, Lowercase letters, Base 10 digits, and Symbols..
대,소문자,숫자,특수문자 중 3개의 조합도 써야한다고 한다.
qwer1234! 로 바꿔서 다시시도
(base) lambda256@ethan ~ % docker run -d --name sql_server -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=qwer1234!' -p 1433:1433 mcr.microsoft.com/mssql/server:2019-latest
(base) lambda256@ethan ~ % mssql -u sa -p qwer1234!
Connecting to localhost...done
sql-cli version 0.6.2
Enter ".help" for usage hints.
mssql>
드디어 성공! mssql에서 비밀번호는 상당히 복잡하게 만들어야 하나보다.
이제 테이블 생성이 되는지 테스트를 해보자
Error: The size (65535) given to the column '칼럼이름' exceeds the maximum allowed for any data type (8000).
이번에도 당연히 사이즈 에러가 나온다.
https://www.promotic.eu/en/pmdoc/Subsystems/Db/MsSQL/DataTypes.htm
사이즈 최대치를 보자면 text를 쓰면 되지 않을까?
nvarchar의 사이즈를 키우는 것이니 ntext로 생성하기로 하였다.
nvarchar(max)를 쓰라는 답변이 많았는데 찾아보니 이건 2GB까지 지원이 된다고 한다.
2GB = 2147483648 byte이므로, 충분한것 같다.
따라서 nvarchar(max)로 생성해주는것으로 하겠다.
마지막으로 postgreSQL이 남았는데 이 부분은 다른 급한 프로젝트가 생겨서 나중에 이어서 할 것 같다.
'개발 > docker & linux' 카테고리의 다른 글
mac terminal 압축파일 관련 명령어 (0) | 2021.08.23 |
---|---|
운영체제, 터미널의 구조와 그에 따른 환경 변수의 설정 (direnv 사용) (0) | 2021.08.18 |
docker에 DB 설치하기 (3) - postgreSQL (0) | 2021.08.12 |
docker에 DB 설치하기 (1) - oracle (0) | 2021.08.09 |
Docker 사용하기 (0) | 2021.08.07 |