티스토리 뷰

Debain 10 에 MSSQL Server 2019 와 mssql-cli 를 설치하면서 기록으로 남겨 두게  되었다.

 

 

root@FREECATZ-PE-KR:~# uname -a
Linux FREECATZ-PE-KR 4.19.0-18-cloud-amd64 #1 SMP Debian 4.19.208-1 (2021-09-29) x86_64 GNU/Linux

 

root@FREECATZ-PE-KR:~# wget https://packages.microsoft.com/keys/microsoft.asc
root@FREECATZ-PE-KR:~# ls
microsoft.asc

root@FREECATZ-PE-KR:~# apt-key add ./microsoft.asc
E: gnupg, gnupg2 and gnupg1 do not seem to be installed, but one of them is required for this operation

root@FREECATZ-PE-KR:~# apt-get install gnupg gnupg2 gnupg1
... 길어서 중략 ...
Processing triggers for man-db (2.8.5-2) ...
Processing triggers for libc-bin (2.28-10) ...

root@FREECATZ-PE-KR:~# apt-key add ./microsoft.asc
OK
root@FREECATZ-PE-KR:~# rm -rf ./microsoft.asc

root@FREECATZ-PE-KR:~# curl https://packages.microsoft.com/config/ubuntu/16.04/mssql-server-2019.list | tee /etc/apt/sources.list.d/mssql-server-2019.list
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   103  100   103    0     0    366      0 --:--:-- --:--:-- --:--:--   366
deb [arch=amd64,arm64,armhf] https://packages.microsoft.com/ubuntu/16.04/mssql-server-2019 xenial main

root@FREECATZ-PE-KR:~# apt-get update
기존:1 http://security.debian.org/debian-security buster/updates InRelease
기존:2 http://cdn-aws.deb.debian.org/debian buster InRelease                                                        
기존:3 http://cdn-aws.deb.debian.org/debian buster-updates InRelease                                                
기존:4 http://cdn-aws.deb.debian.org/debian buster-backports InRelease                                              
받기:5 https://packages.microsoft.com/ubuntu/16.04/mssql-server-2019 xenial InRelease [10.5 kB]                     
받기:6 https://packages.microsoft.com/ubuntu/16.04/mssql-server-2019 xenial/main arm64 Packages [5,030 B]
기존:7 https://repo.zabbix.com/zabbix/5.4/debian buster InRelease                                    
받기:8 https://packages.microsoft.com/ubuntu/16.04/mssql-server-2019 xenial/main armhf Packages [5,030 B]
받기:9 https://packages.microsoft.com/ubuntu/16.04/mssql-server-2019 xenial/main amd64 Packages [27.7 kB]
내려받기 48.2 k바이트, 소요시간 1초 (69.8 k바이트/초)          
패키지 목록을 읽는 중입니다... 완료

root@FREECATZ-PE-KR:~# apt-cache search mssql-server
mssql-server - Microsoft SQL Server Relational Database Engine
mssql-server-extensibility - The mssql-server-extensibility package contains support for language extensions for the Microsoft SQL Server Relational Database Engine.
... 중략 ...

root@FREECATZ-PE-KR:~# apt-get install mssql-server
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다       
상태 정보를 읽는 중입니다... 완료
The following additional packages will be installed:
  gawk gdb libbabeltrace1 libc++1 libc++1-7 libc++abi1-7 libc6-dbg libdw1 libipt2 libmpfr6 libpython3.7 libsasl2-modules-gssapi-mit libsigsegv2
  libsss-nss-idmap0 libunwind8
제안하는 패키지:
  gawk-doc gdb-doc gdbserver clang
다음 새 패키지를 설치할 것입니다:
  gawk gdb libbabeltrace1 libc++1 libc++1-7 libc++abi1-7 libc6-dbg libdw1 libipt2 libmpfr6 libpython3.7 libsasl2-modules-gssapi-mit libsigsegv2
  libsss-nss-idmap0 libunwind8 mssql-server
0개 업그레이드, 16개 새로 설치, 0개 제거 및 9개 업그레이드 안 함.
271 M바이트 아카이브를 받아야 합니다.
이 작업 후 1,234 M바이트의 디스크 공간을 더 사용하게 됩니다.
계속 하시겠습니까? [Y/n] y
받기:1 http://cdn-aws.deb.debian.org/debian buster/main amd64 libmpfr6 amd64 4.0.2-1 [775 kB]
받기:2 http://cdn-aws.deb.debian.org/debian buster/main amd64 libsigsegv2 amd64 2.12-2 [32.8 kB]
... 중략 ...
+--------------------------------------------------------------+
'sudo /opt/mssql/bin/mssql-conf setup'을 실행하여
Microsoft SQL Server의 설정을 완료하세요.
+--------------------------------------------------------------+

Processing triggers for man-db (2.8.5-2) ...
Processing triggers for libc-bin (2.28-10) ...

root@FREECATZ-PE-KR:~# /opt/mssql/bin/mssql-conf setup
SQL Server의 버전을 선택합니다.
  1) Evaluation (무료, 프로덕션 사용권 없음, 180일 제한)
  2) Developer (무료, 프로덕션 사용권 없음)
  3) Express (무료)
  4) Web (유료)
  5) Standard (유료)
  6) Enterprise (유료) - CPU 코어 사용률이 물리적 코어 20개/하이퍼스레드 코어 40개로 제한됨
  7) Enterprise Core (유료) - 운영 체제 최대까지 CPU 코어 사용률
  8) 소매 채널을 통해 라이선스를 구했으며 입력할 제품 키가 있습니다.

버전 세부 정보는 다음 위치에서 확인할 수 있음
https://go.microsoft.com/fwlink/?LinkId=2109348&clcid=0x412

이 소프트웨어의 유료 버전을 사용하려면
Microsoft Volume Licensing 프로그램을 통해 라이선스를 받아야 합니다.
유료 버전을 선택하는 경우 이 소프트웨어를 설치 및 실행하는 데 필요한
적절한 라이선스 번호가 있음을 확인하는 것입니다.

버전 입력(1-8): 2
이 제품의 사용 조건은 다음 위치에서 확인하거나
/usr/share/doc/mssql-server 다운로드할 수 있습니다.
https://go.microsoft.com/fwlink/?LinkId=2104294&clcid=0x412

개인정보처리방침은 다음 위치에서 확인할 수 있습니다.
https://go.microsoft.com/fwlink/?LinkId=853010&clcid=0x412

사용 조건에 동의하시겠습니까? [Yes/No]:Yes

SQL Server의 언어를 선택합니다.
(1) English
(2) Deutsch
(3) Español
(4) Français
(5) Italiano
(6) 日本語
(7) 한국어
(8) Português
(9) Руѝѝкий
(10) 中文 – 简体
(11) 中文 (繝体)
옵션 1-11을 입력합니다. 7

SQL Server 시스템 관리자 암호 입력: <은밀하고 비밀스럽게 sa계정의 암호를 입력해 주세요>
SQL Server 시스템 관리자 암호 확인: <은밀하고 비밀스럽게 sa계정의 암호를 다시 한번 입력해 주세요>
SQL Server 구성 중...

ForceFlush is enabled for this instance. 
ForceFlush feature is enabled for log durability.
Created symlink /etc/systemd/system/multi-user.target.wants/mssql-server.service → /lib/systemd/system/mssql-server.service.
설치가 완료되었습니다. 이제 SQL Server를 시작하는 중입니다.

root@FREECATZ-PE-KR:~# service mssql-server status
● mssql-server.service - Microsoft SQL Server Database Engine
   Loaded: loaded (/lib/systemd/system/mssql-server.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2021-12-23 04:47:32 UTC; 5min ago
     Docs: https://docs.microsoft.com/en-us/sql/linux
 Main PID: 22447 (sqlservr)
    Tasks: 191
   Memory: 868.4M
   CGroup: /system.slice/mssql-server.service
           ├─22447 /opt/mssql/bin/sqlservr
           └─22475 /opt/mssql/bin/sqlservr

12월 23 04:47:36 FREECATZ-PE-KR sqlservr[22447]: [106B blob data]
12월 23 04:47:36 FREECATZ-PE-KR sqlservr[22447]: [75B blob data]
12월 23 04:47:36 FREECATZ-PE-KR sqlservr[22447]: [120B blob data]
12월 23 04:47:36 FREECATZ-PE-KR sqlservr[22447]: [96B blob data]
12월 23 04:47:36 FREECATZ-PE-KR sqlservr[22447]: [124B blob data]
12월 23 04:47:36 FREECATZ-PE-KR sqlservr[22447]: [100B blob data]
12월 23 04:47:36 FREECATZ-PE-KR sqlservr[22447]: [83B blob data]
12월 23 04:47:36 FREECATZ-PE-KR sqlservr[22447]: [158B blob data]
12월 23 04:47:36 FREECATZ-PE-KR sqlservr[22447]: [71B blob data]
12월 23 04:47:36 FREECATZ-PE-KR sqlservr[22447]: [124B blob data]

 

 

 

 

Microsoft SQL Server 2019 (RTM-CU14) (KB5007182) - 15.0.4188.2 (X64) 

Nov  3 2021 19:19:51 

Copyright (C) 2019 Microsoft Corporation

Developer Edition (64-bit) on Linux (Debian GNU/Linux 10 (buster)) <X64>

 

 

 

스크린샷은 없지만, 테스트로 데이터베이스 및 테이블 생성후 한글 입력이 잘 되는 것도 확인 하였다.

 

 

linux 에 설치된 mssql 의 설정은  /opt/mssql/bin 에 mssql-conf 를 실행 하여 추가 적인 설정이 가능 한 것으로 보인다.

 

root@FREECATZ-PE-KR:~# cd /opt/mssql/bin

root@FREECATZ-PE-KR:~# ls
adutil            crash-support-functions.sh  handle-crash.sh  paldumper
compress-dump.sh  generate-sql-dump.sh        mssql-conf       sqlservr

root@FREECATZ-PE-KR:~# ./mssql-conf 
usage: mssql-conf [-h] [-n] [-v] [-q]  ...

positional arguments:
  
    setup                          Microsoft SQL Server를 초기화 및 설정합니다.
    set                              설정의 값을 설정합니다.
    unset                          설정의 값을 설정 해제합니다.
    list                               지원되는 설정을 나열합니다.
    get                              섹션의 모든 설정에 지정된 값 또는 개별 설정의 값을 가져옵니다.
    traceflag                    하나 이상의 추적 플래그를 사용하거나 사용하지 않습니다.
    set-sa-password       SA(시스템 관리자) 암호를 설정합니다.
    set-collation               시스템 데이터베이스의 데이터 정렬을 설정합니다.
    validate                       구성 파일의 유효성을 검사합니다.
    set-edition                  SQL Server 인스턴스 버전 설정
    validate-ad-config     Active Directory 인증의 구성 유효성 검사
    setup-ad-keytab       Create a keytab for SQL Server to use to authenticate AD
                                         users. Password may be specified interactively (unless
                                         noprompt is set) or through the MSSQL_CONF_PASSWORD
                                        environment variable.

optional arguments:
  -h, --help               show this help message and exit
  -n, --noprompt      사용자에게 메시지를 표시하지 않고 환경 변수 또는 기본값을 사용합니다.
  -v, --verbose         Enables verbose logging for mssql-conf (messages might
                                  not be localized).
  -q, --quiet             Completely disables the logging of mssql-conf. When this
                                  option is not selected, logs are stored in
                                  /var/opt/mssql/log/mssql-conf/mssql-conf.log.

 

설정 명령의 자세한 설명은 https://docs.microsoft.com/ko-kr/sql/linux/sql-server-linux-configure-mssql-conf 를 참고 한다.

 

 

이제, 리눅스의 CLI 에서 쿼리 실행이 가능 하도록 mssql-cli 를 설치 하려고 한다.

 * 참고 : MSSQL 의 Cross Platform GUI Front-End 로는 DBeaver, Azure Data Studio 등이 있다.

 

MS 에서 제공하는 우분투 패키지 리스트( https://packages.microsoft.com/ubuntu/ )를 이용해서 Debian 10 에 mssql-cli 가 설치 불가능 했다.

root@FREECATZ-PE-KR:~# curl https://packages.microsoft.com/config/ubuntu/<우분투 배포판 버젼>/prod.list  |  tee /etc/apt/sources.list.d/msprod.list

root@FREECATZ-PE-KR:~# apt-get update

... 길어서 중략 ...

root@FREECATZ-PE-KR:~# apt-get install mssql-cli
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다       
상태 정보를 읽는 중입니다... 완료
몇몇 패키지를 설치할 수 없습니다. 요청한 상황이 불가능할 수도 있고,
불안정 배포판을 사용해서 일부 필요한 패키지를 아직 만들지 않았거나,
아직 Incoming에서 나오지 않은 경우일 수도 있습니다.
이 상황을 해결하는데 다음 정보가 도움이 될 수도 있습니다:

다음 패키지의 의존성이 맞지 않습니다:
 mssql-cli : 의존: libicu52 하지만 설치할 수 없습니다 혹은
                     libicu55 하지만 설치할 수 없습니다 혹은
                     libicu57 하지만 설치할 수 없습니다 혹은
                     libicu60 하지만 설치할 수 없습니다
E: 문제를 바로잡을 수 없습니다. 망가진 고정 패키지가 있습니다.

 

이 문제를 해결 하기 위해서 libicu 또는 libicu-dev 패키지를 설치 해보라고 하여 설치해 봤지만, 결과는 위와 동일하였다.

debian 10 에서 libicu 를 설치하면, 아래와 같이 libicu63 이 설치 된다.

root@FREECATZ-PE-KR:~# dpkg -l | grep -i libicu
ii  libicu63:amd64                    63.1-6+deb10u2               amd64        International Components for Unicode

 

어떻게든 mssql-cli 를 설치 해야 겠다 한다면, python 의 pip 를 이용하여 설치가 가능 하다.

 

 

root@FREECATZ-PE-KR:~# python -V
Python 2.7.16

root@FREECATZ-PE-KR:~# apt-cache search python-pip
python-pip - Python package installer
python-pip-whl - Python package installer

root@FREECATZ-PE-KR:~# apt install python-pip

패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다       
상태 정보를 읽는 중입니다... 완료
... 길어서 중략 ...
0개 업그레이드, 27개 새로 설치, 0개 제거 및 9개 업그레이드 안 함.
36.2 M바이트 아카이브를 받아야 합니다.
이 작업 후 67.9 M바이트의 디스크 공간을 더 사용하게 됩니다.
계속 하시겠습니까? [Y/n] y

... 길어서 중략 ...

root@FREECATZ-PE-KR:~# pip -V
pip 18.1 from /usr/lib/python2.7/dist-packages/pip (python 2.7)

 

root@FREECATZ-PE-KR:~# pip search mssql-cli
Exception:
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/pip/_internal/cli/base_command.py", line 143, in main
  ... 길어서 중략 ...
    raise Fault(**self._stack[0])
Fault: <Fault -32500: "RuntimeError: PyPI's XMLRPC API is currently disabled due to unmanageable load and will be deprecated in the near future. See https://status.python.org/ for more information.">

 

에러가 발생 한다. 아래의 명령어로 pip 명령어를 업그레이드 해보자.

root@FREECATZ-PE-KR:~# pip install -U pip

Collecting pip
  Downloading https://files.pythonhosted.org/packages/27/79/8a850fe3496446ff0d584327ae44e7500daf6764ca1a382d2d02789accf7/pip-20.3.4-py2.py3-none-any.whl (1.5MB)
    100% |████████████████████████████████| 1.5MB 970kB/s 
Installing collected packages: pip
  Found existing installation: pip 18.1
    Not uninstalling pip at /usr/lib/python2.7/dist-packages, outside environment /usr
    Can't uninstall 'pip'. No files were found to uninstall.
Successfully installed pip-20.3.4
root@FREECATZ-PE-KR:~# pip -V
WARNING: pip is being invoked by an old script wrapper. This will fail in a future version of pip.
Please see https://github.com/pypa/pip/issues/5599 for advice on fixing the underlying issue.
To avoid this problem you can invoke Python with '-m pip' instead of running pip directly.
pip 20.3.4 from /usr/local/lib/python2.7/dist-packages/pip (python 2.7)

 

* 참고 : pip 명령어를 업그레이드 하고 나서도 pip search 에서는 에러가 발생 한다. 무시 하고 진행 한다.

 

root@FREECATZ-PE-KR:~# pip install mssql-cli
WARNING: pip is being invoked by an old script wrapper. This will fail in a future version of pip.
Please see https://github.com/pypa/pip/issues/5599 for advice on fixing the underlying issue.
To avoid this problem you can invoke Python with '-m pip' instead of running pip directly.
DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. pip 21.0 will drop support for Python 2.7 in January 2021. More details about Python 2 support in pip can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support pip 21.0 will remove support for this functionality.
Collecting mssql-cli
  Downloading mssql_cli-1.0.0-py2.py3-none-manylinux1_x86_64.whl (43.4 MB)
     |████████████████████████████████| 43.4 MB 1.8 MB/s 
Collecting applicationinsights>=0.11.1
  Downloading applicationinsights-0.11.10-py2.py3-none-any.whl (55 kB)
     |████████████████████████████████| 55 kB 5.7 MB/s 
Collecting Pygments>=2.0

.. 길어서 중략 ...

root@FREECATZ-PE-KR:~# mssql-cli -v
Version: 1.0.0

 

드디어, mssql-cli 를 설치 하였다.

 

root@FREECATZ-PE-KR:~# mssql-cli
Username (press enter for sa): sa
Password: 
master>  

이제 Debian 10 의 CLI 에서 mssql 의 쿼리를 실행 할 수 있게 되었다.

 

MSSQL 기초 쿼리
-- 데이터베이스 생성 쿼리
EX) CREATE DATABASE 데이터베이스이름;
SQL> CREATE DATABASE TESTDB;


-- 사용자 로그인 계정 생성 쿼리 
EX) CREATE LOGIN 생성할사용자계정 WITH PASSWORD='비밀스러운비밀번호', DEFAULT_DATABASE=데이터베이스이름;
SQL> CREATE LOGIN testuser WITH PASSWORD='qwer1234', DEFAULT_DATABASE=TESTDB;


-- 데이터베이스에 사용자 생성 쿼리
EX) USE 데이터베이스이름;
EX) CREATE USER 생성할사용자계정 FOR LOGIN 로그인계정 WITH DEFAULT_SCHEMA=dbo;

SQL> USE TESTDB;
SQL> CREATE USER testuser FOR LOGIN testuser WITH DEFAULT_SCHEMA=dbo;


-- 데이터베이스에 권한 부여 쿼리
EX) GRANT CONTROL ON DATABASE::데이터베이스이름 TO 사용자계정;
SQL> GRANT
CONTROL ON DATABASE::TESTDB TO testuser;



-- 테이블 생성 권한 부여 쿼리
EX) GRANT CREATE TABLE TO 사용자계정;
SQL> GRANT CREATE TABLE TO testuser;



-- 뷰(view) 생성 권한 부여 쿼리
EX) GRANT CREATE VIEW TO 사용자계정 WITH GRANT OPTION;
SQL> GRANT CREATE VIEW TO testuser WITH GRANT OPTION;


-- 스키마에 권한 부여 쿼리
EX) GRANT CONTROL ON SCHEMA::dbo TO 사용자계정;
SQL> GRANT
CONTROL ON SCHEMA::dbo TO testuser;



-- 프로시저 생성 권한 부여
EX) GRANT CREATE PROCEDURE TO 사용자계정;
SQL> GRANT CREATE PROCEDURE TO testuser;


-- 로그인 삭제 쿼리
EX) DROP LOGIN 사용자계정
SQL> DROP LOGIN testuser;


-- 사용자 삭제 쿼리
EX) DROP USER 사용자계정;
SQL> DROP USER testuser;


 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
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
글 보관함