샘플: Red Hat Enterprise Linux용 무인 SQL Server 설치 스크립트

적용 대상:SQL Server on Linux

이 샘플 bash 스크립트는 대화형 입력 없이 RHEL(Red Hat Enterprise Linux)에 SQL Server를 설치합니다. 데이터베이스 엔진, SQL Server 명령줄 도구, SQL Server 에이전트 설치 및 설치 후 단계 수행 예시를 제공합니다. 선택적으로 SQL Server Full-Text Search를 설치하고 관리자 사용자를 생성할 수 있습니다.

Tip

무인 설치 스크립트가 필요하지 않은 경우 SQL Server를 설치하는 가장 빠른 방법은 빠른 시작: SQL Server 설치 및 Red Hat Enterprise Linux에 데이터베이스 만들기를 수행하는 것입니다. 다른 설정 내용은 Linux에서 SQL Server 설치 지침을 참조하세요.

Prerequisites

  • Linux에서 SQL Server를 실행하려면 2GB 이상의 메모리가 필요합니다.
  • 파일 시스템은 XFS 또는 ext4여야 합니다. BTRFS 등의 다른 파일 시스템은 지원되지 않습니다.
  • 기타 시스템 요구 사항은 SQL Server on Linux에 대한 시스템 요구 사항을 참조하세요.

샘플 스크립트

이 예제에서는 RHEL 8.x에 SQL Server 2019(15.x)를 설치합니다. 다른 버전의 SQL Server 또는 RHEL을 설치하려면 그에 따라 Microsoft 리포지토리 경로를 변경합니다.

샘플 스크립트를 파일에 저장합니다. 커스터마이징하려면 스크립트 내 변수 값을 교체해야 합니다. 스크립트 파일에서 스크립팅 변수를 제거하기만 하면 스크립팅 변수를 환경 변수로 설정할 수도 있습니다.

Important

SA_PASSWORD 환경 변수는 사용되지 않습니다. MSSQL_SA_PASSWORD를 대신 사용하세요.

암호는 SQL Server 기본 암호 정책을 따라야 합니다. 기본적으로 암호는 8자 이상이어야 하며 대문자, 소문자, 0~9까지의 숫자 및 기호 네 가지 집합 중 세 집합의 문자를 포함해야 합니다. 암호는 최대 128자까지 가능합니다. 되도록 길고 복잡한 암호를 사용합니다.

#!/bin/bash -e

# Use the following variables to control your install:

# Password for the SA user (required)
MSSQL_SA_PASSWORD='<password>'

# Product ID of the version of SQL Server you're installing
# Must be evaluation, developer, express, web, standard, enterprise, or your 25 digit product key
# Defaults to developer
MSSQL_PID='evaluation'

# Enable SQL Server Agent (recommended)
SQL_ENABLE_AGENT='y'

# Install SQL Server Full-Text Search (optional)
# SQL_INSTALL_FULLTEXT='y'

# Create an additional user with sysadmin privileges (optional)
# SQL_INSTALL_USER='<Username>'
# SQL_INSTALL_USER_PASSWORD='<password>'

if [ -z $MSSQL_SA_PASSWORD ]
then
  echo Environment variable MSSQL_SA_PASSWORD must be set for unattended install
  exit 1
fi

echo Adding Microsoft repositories...
sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/8/mssql-server-2019.repo
sudo curl -o /etc/yum.repos.d/msprod.repo https://packages.microsoft.com/config/rhel/8/prod.repo

echo Installing SQL Server...
sudo yum install -y mssql-server

echo Running mssql-conf setup...
sudo MSSQL_SA_PASSWORD=$MSSQL_SA_PASSWORD \
     MSSQL_PID=$MSSQL_PID \
     /opt/mssql/bin/mssql-conf -n setup accept-eula

echo Installing mssql-tools and unixODBC developer...
sudo ACCEPT_EULA=Y yum install -y mssql-tools unixODBC-devel

# Add SQL Server tools to the path by default:
echo Adding SQL Server tools to your path...
echo PATH="$PATH:/opt/mssql-tools/bin" >> ~/.bash_profile
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc

# Optional Enable SQL Server Agent:
if [ ! -z $SQL_ENABLE_AGENT ]
then
  echo Enable SQL Server Agent...
  sudo /opt/mssql/bin/mssql-conf set sqlagent.enabled true
fi

# Optional SQL Server Full-Text Search installation:
if [ ! -z $SQL_INSTALL_FULLTEXT ]
then
    echo Installing SQL Server Full-Text Search...
    sudo yum install -y mssql-server-fts
fi

# Configure firewall to allow TCP port 1433:
echo Configuring firewall to allow traffic on port 1433...
sudo firewall-cmd --zone=public --add-port=1433/tcp --permanent
sudo firewall-cmd --reload

# Example of setting post-installation configuration options
# Set trace flags 1204 and 1222 for deadlock tracing:
#echo Setting trace flags...
#sudo /opt/mssql/bin/mssql-conf trace flag 1204 1222 on

# Restart SQL Server after making configuration changes:
echo Restarting SQL Server...
sudo systemctl restart mssql-server

# Connect to server and get the version:
counter=1
errstatus=1
while [ $counter -le 5 ] && [ $errstatus -ne 0 ]
do
  echo Waiting for SQL Server to start...
  sleep 5s
  if /opt/mssql-tools/bin/sqlcmd \
      -S localhost \
      -U sa \
      -P $MSSQL_SA_PASSWORD \
      -Q "SELECT @@VERSION" 2>/dev/null
  then
    errstatus=0
  else
    errstatus=$?
  fi
  ((counter++))
done

# Display error if connection failed:
if [ $errstatus -ne 0 ]
then
  echo Cannot connect to SQL Server, installation aborted
  exit $errstatus
fi

# Optional new user creation:
if [ ! -z $SQL_INSTALL_USER ] && [ ! -z $SQL_INSTALL_USER_PASSWORD ]
then
  echo Creating user $SQL_INSTALL_USER
  /opt/mssql-tools/bin/sqlcmd \
    -S localhost \
    -U sa \
    -P $MSSQL_SA_PASSWORD \
    -Q "CREATE LOGIN [$SQL_INSTALL_USER] WITH PASSWORD=N'$SQL_INSTALL_USER_PASSWORD', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=ON, CHECK_POLICY=ON; ALTER SERVER ROLE [sysadmin] ADD MEMBER [$SQL_INSTALL_USER]"
fi

echo Done!

스크립트 실행

스크립트를 실행하려면

  1. 원하는 텍스트 편집기에 샘플을 붙여넣고 기억하기 쉬운 install_sql.sh과 같은 이름으로 저장합니다.

  2. MSSQL_SA_PASSWORD, MSSQL_PID 및 변경하려는 다른 변수를 사용자 지정합니다.

    Caution

    암호는 SQL Server 기본 암호 정책을 따라야 합니다. 기본적으로 암호는 8자 이상이어야 하며 대문자, 소문자, 0~9까지의 숫자 및 기호 네 가지 집합 중 세 집합의 문자를 포함해야 합니다. 암호는 최대 128자까지 가능합니다. 되도록 길고 복잡한 암호를 사용합니다.

  3. 스크립트를 실행 파일로 표시합니다.

    chmod +x install_sql.sh
    
  4. 스크립트를 실행합니다.

    ./install_sql.sh
    

스크립트 해석

bash 스크립트가 수행하는 첫 번째 작업은 몇 가지 변수를 설정하는 것입니다. 이 변수는 샘플과 같은 스크립팅 변수이거나 환경 변수일 수 있습니다. 변수 MSSQL_SA_PASSWORD는 SQL Server 설치에 필요합니다. 다른 변수는 스크립트에 대해 만든 사용자 지정 변수입니다. 샘플 스크립트는 다음 단계를 수행합니다.

  1. SQL Server 및 명령줄 도구를 위한 Microsoft 리포지토리를 등록합니다.

  2. SQL Server를 설치합니다.

  3. MSSQL_SA_PASSWORD를 사용하여 SQL Server를 구성하고 최종 사용자 사용권 계약에 자동으로 동의합니다.

  4. SQL Server 명령줄 도구에 대한 최종 사용자 사용권 계약에 자동으로 동의하고, 설치한 후 unixODBC-devel 패키지를 설치합니다.

  5. 쉽게 사용할 수 있도록 SQL Server 명령줄 도구를 경로에 추가합니다.

  6. 스크립트 변수 SQL_ENABLE_AGENT 가 설정되어 있으면 SQL Server 에이전트를 활성화하세요. 샘플이 기본값으로 설정합니다.

  7. 변수가 설정되어 있다면 SQL_INSTALL_FULLTEXT 선택적으로 SQL Server Full-Text Search를 설치할 수 있습니다.

  8. 다른 시스템에서 SQL Server에 연결하는 데 필요한 시스템 방화벽의 TCP용 포트 1433을 차단 해제합니다.

  9. 필요에 따라 교착 상태 추적에 대한 추적 플래그를 설정합니다(줄의 주석 처리를 제거해야 합니다).

  10. 설정 변경 후 SQL Server 서비스를 재시작하세요.

  11. 오류 메시지를 숨기는 동안 SQL Server가 올바르게 설치되었는지 확인합니다.

  12. SQL_INSTALL_USER과 SQL_INSTALL_USER_PASSWORD가 둘 다 설정된 경우 새 서버 관리자 사용자를 만듭니다.

무인 설치

여러 무인 설치를 간소화하고 적절한 환경 변수를 설정하는 독립 실행형 bash 스크립트를 만듭니다. 예제 스크립트에서 사용하는 변수를 제거하고 해당 변수를 자체 bash 스크립트에 넣을 수 있습니다.

#!/bin/bash
export MSSQL_SA_PASSWORD='<password>'
export MSSQL_PID='evaluation'
export SQL_ENABLE_AGENT='y'
export SQL_INSTALL_USER='<Username>'
export SQL_INSTALL_USER_PASSWORD='<password>'

Caution

암호는 SQL Server 기본 암호 정책을 따라야 합니다. 기본적으로 암호는 8자 이상이어야 하며 대문자, 소문자, 0~9까지의 숫자 및 기호 네 가지 집합 중 세 집합의 문자를 포함해야 합니다. 암호는 최대 128자까지 가능합니다. 되도록 길고 복잡한 암호를 사용합니다.

그런 다음, bash 스크립트를 다음과 같이 실행합니다.

. ./my_script_name.sh