(1.1)sql server for linux 安裝(yum、靜默安裝、環境變量安裝、docker安裝)


【1】安裝方式

  linux下安裝sqlserver數據庫有2種辦法,第一使用yum鏡像安裝,第二使用rpm安裝包安裝

  rpm安裝地址為:https://packages.microsoft.com/rhel/7/mssql-server-2017/

  使用rpm安裝的話可能存在依賴問題,此處不做詳細安裝說明。

  本文使用yum安裝

重點說一下yum方式安裝,我們這里安裝的版本為sqlserver2017,步驟如下:

【2】yum安裝

【2.1】軟件環境

1.centos或redhat7.0以上系統(本測試環境CentOS7.5)

2.內存2G以上

【2.2】大致安裝步驟

1.設置sqlserver安裝鏡像

  curl https://packages.microsoft.com/config/rhel/7/mssql-server-2017.repo > /etc/yum.repos.d/mssql-server.repo

  #curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/7/mssql-server-2017.repo

2.執行安裝

  yum install -y mssql-server

完畢之后運行 sudo /opt/mssql/bin/mssql-conf setup 做相關配置

【3】詳細步驟演示

【3.1】聯網獲取 mssql 的 repo 文件

  curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/7/mssql-server-2017.repo

    

 

 

【3.2】yum安裝

  yum install -y mssql-server

    

 

 大概就近200M吧

【3.3】運行mssql-conf setup,默認路徑 /opt/mssql/bin/mssql-conf

   sudo /opt/mssql/bin/mssql-conf setup

    

   發現是英文的,切換一下語言環境

    

 

   我們這里是個人研究使用,選擇開發版(免費、功能完善),中文簡體。密碼還有相關策略

     

 

 

 【4】查看與連接

【4.1】查看數據庫服務狀態

  systemctl status mssql-server.service

    

 

 

【4.2】禁用 firewalld 和 selinux

  禁用 firewalld 和 selinux,以便后續使用連接工具可以連接上MSSQL(也可以使用firewalld-cmd 命令開放1433 端口即可)

systemctl status firewalld
systemctl stop firewalld
systemctl disable firewalld

#firewall-cmd --zone=public --add-port=1433/tcp --permanent
#firewall-cmd --reload
 

  禁用 SELINUX

getenforce
setenforce 0
vi /etc/sysconfig/selinux
修改SELINUX值為disabled

【4.3】查看進程狀態與版本

rpm -qa |grep mssql
ps -ef|grep mssql

  

【4.4】安裝新的ODBC包

#(0)應用網絡源,下載Red Hat Repo配置文件
curl -o /etc/yum.repos.d/msprod.repo https://packages.microsoft.com/config/rhel/7/prod.repo

#(1)卸載舊版的unixODBC包
yum remove unixODBC-utf16 unixODBC-utf16-devel
#(2)安裝新版 unixODBC包
yum install -y mssql-tools unixODBC-devel

下載安裝完成之后,發現 /opt/ 下面多了一個mssql-tool,里頭目錄下有了bcp和sqlcmd工具了。 

  目錄 /opt/mssql-tools/bin/

 

 

 

#(4)把上面的工具目錄加入環境變量
echo
'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc source ~/.bashrc

#參考:bashrc 與 profile 的區別

【4.5】使用sqlcmd連接上數據庫

sqlcmd -S 127.0.0.1 -U sa -P a123456!

#sqlcmd -S localhost -U sa -P a123456!

-S:服務器名稱  -U:賬戶(sa是默認管理員賬戶)  -P:密碼(密碼是我們安裝的時候要輸入的密碼)

  

 

【4.6】如何使用查詢語句?

如下圖所示,建議語句以分號;結尾。(當然你要是不輸入也沒關系,如下面右圖)

而要真正提交執行,需要輸入GO。且這個GO一定要在下一行之后,不能與語句在同一行,具體見【4.5】中的圖

    

 【5】使用MSSQL-CONF 

【5.1】開啟SQLAGENT 代理服務

#啟用SQL Server代理

sudo /opt/mssql/bin/mssql-conf set sqlagent.enabled true

#需要重啟服務生效

sudo systemctl restart mssql-server

 【5.2】相關功能查看

  

 【6】自動化安裝(類似win上的靜默安裝)

【6.1】確保網絡可以連通外網

  ping www.baidu.com

【6.2】生成自動化腳本install_sql.sh

記得,要根據需求修改腳本里的內容啊

#!/bin/bash -e # Use the following variables to control your install: # Password for the SA user (required) MSSQL_SA_PASSWORD='<YourStrong!Passw0rd>' # 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' # Install SQL Server Agent (recommended) SQL_INSTALL_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='<YourStrong!Passw0rd>'
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/7/mssql-server-2017.repo
sudo curl -o /etc/yum.repos.d/msprod.repo https://packages.microsoft.com/config/rhel/7/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 # Optional SQL Server Agent installation: if [ ! -z $SQL_INSTALL_AGENT ] then
  echo Installing SQL Server Agent... sudo yum install -y mssql-server-agent 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 traceflag 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 = 1 ] do
  echo Waiting for SQL Server to start... sleep 5s /opt/mssql-tools/bin/sqlcmd \ -S localhost \ -U SA \ -P $MSSQL_SA_PASSWORD \ -Q "SELECT @@VERSION" 2>/dev/null errstatus=$? ((counter++)) done # Display error if connection failed: if [ $errstatus = 1 ] 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!

【6.3】后續執行步驟

1. 將以上腳本保存為install_sql.sh。

2. 指定MSSQL_SA_PASSWORD、MSSQL_PID,和你想修改的其他變量。

3. 將該腳本修改為可執行。

chmod +x install_sql.sh

4. 運行腳本。

./install_sql.sh

【7】使用linux mssql的環境變量安裝

你可以使用不同的環境變量在Linux上配置SQL Server 2017。這些變量用於兩個場景:

  • 使用mssql-conf setup命令配置初始化設置。

  • 配置一個新的Docker容器中的SQL Server。

環境變量

環境變量

描述

ACCEPT_EULA

在設置為任何值(例如“Y”)時接受 SQL Server 許可協議。

MSSQL_SA_PASSWORD

配置 SA 用戶密碼。

MSSQL_PID

設置 SQL Server 版本或產品密鑰。 可能的值包括:
Evaluation
開發人員
Express
Web
Standard
企業版
產品密鑰
如果指定產品密鑰,它必須是格式為 # # #-# # #-# # #-# # #-# # #,其中 # 是數字或字母。

MSSQL_LCID

設置要用於 SQL Server 的語言 ID。 例如 1036年為法語。

MSSQL_COLLATION

設置 SQL Server 的默認排序規則。 這會重寫排序規則的語言 id (LCID) 的默認的映射。

MSSQL_MEMORY_LIMIT_MB

設置 SQL Server 可使用的內存 (以 mb 為單位) 的最長。 默認情況下它是總物理內存的 80%。

MSSQL_TCP_PORT

配置 SQL Server 用於偵聽的 TCP 端口(默認為 1433)。

MSSQL_IP_ADDRESS

設置 IP 地址。 目前,IP 地址必須為 IPv4 樣式 (0.0.0.0)。

MSSQL_BACKUP_DIR

設置默認備份目錄位置。

MSSQL_DATA_DIR

更改創建新 SQL Server 數據庫數據文件 (.mdf) 的目錄。

MSSQL_LOG_DIR

更改在其中創建新的 SQL Server 數據庫日志 (.ldf) 文件的目錄。

MSSQL_DUMP_DIR

更改 SQL Server 存放內存轉儲和其他故障排除文件的默認目錄。

MSSQL_ENABLE_HADR

啟用可用性組。 例如,"1"已啟用,並禁用"0"

MSSQL_AGENT_ENABLED

啟用 SQL Server 代理。 例如,啟用了 'true' 和 'false' 被禁用。 默認情況下禁用代理。

MSSQL_MASTER_DATA_FILE

設置 master 數據庫數據文件的位置。

MSSQL_MASTER_LOG_FILE

設置 master 數據庫日志文件的位置。

MSSQL_ERROR_LOG_FILE

設置錯誤日志文件的位置。

 

示例:初始設置

此示例將運行mssql-conf setup與已配置的環境變量。 指定以下環境變量:

  • ACCEPT_EULA接受最終用戶許可協議。

  • MSSSQL_PID指定免費許可開發人員版的 SQL Server 非生產環境中使用。

  • MSSQL_SA_PASSWORD設置強密碼。

  • MSSQL_TCP_PORT設置 SQL Server 學習 1234年偵聽的 TCP 端口。

sudo ACCEPT_EULA='Y' MSSQL_PID='Developer' MSSQL_SA_PASSWORD='<YourStrong!Passw0rd>' MSSQL_TCP_PORT=1234 /opt/mssql/bin/mssql-conf setup
 

示例:Docker

此示例 docker 命令使用以下環境變量來創建新的 SQL Server 2017 容器:

  • ACCEPT_EULA接受最終用戶許可協議。

  • MSSSQL_PID指定免費許可開發人員版的 SQL Server 非生產環境中使用。

  • MSSQL_SA_PASSWORD設置強密碼。

  • MSSQL_TCP_PORT設置 SQL Server 學習 1234年偵聽的 TCP 端口。 這意味着,而不是到主機端口映射端口 1433 (默認值),必須將自定義 TCP 端口映射與-p 1234:1234命令在此示例中。

 

如果在 Linux/macOS 上運行 Docker,請用單引號使用以下語法:

docker run -e ACCEPT_EULA=Y -e MSSQL_PID='Developer' -e MSSQL_SA_PASSWORD='<YourStrong!Passw0rd>' -e MSSQL_TCP_PORT=1234 -p 1234:1234 -d microsoft/mssql-server-linux:2017-latest

如果在 Windows 上運行 Docker,請用雙引號引起來使用以下語法:

docker run -e ACCEPT_EULA=Y -e MSSQL_PID="Developer" -e MSSQL_SA_PASSWORD="<YourStrong!Passw0rd>" -e MSSQL_TCP_PORT=1234 -p 1234:1234 -d microsoft/mssql-server-linux:2017-latest 

【8】離線安裝

如果你的Linux無法訪問在線Repo,你可以直接下載RPM包文件。

這些包位於微軟的資料庫:https://packages.microsoft.com

 

CU9(2018年7月)

SQL Server 2017的累積更新包9。SQL Server引擎版本是14.0.3030.27。

Package

Package version

Downloads

Red Hat RPM package

14.0.3030.27-1

Engine RPM package
High Availability RPM package
Full-text Search RPM package
SSIS package

 

安裝步驟:

1. 下載你平台的數據庫引擎包。

  在版本說明的包詳情部分,可以找到包下載鏈接。

2. 將下載的包放到你的Linux服務器。

  可以使用scp等。

3. 安裝數據庫引擎包。

  sudo yum localinstall mssql-server_versionnumber.x86_64.rpm

  localinstall會自動從可用的Repo源下載安裝依賴。

4. 解決丟失的依賴。

通過以下命令,手工檢測依賴:

    rpm -qpR mssql-server_versionnumber.x86_64.rpm

在解決了丟失的依賴后,嘗試再次安裝mssql-server包。

5. 完成SQL Server配置。

使用mssql-conf完成SQL Server配置:

  sudo /opt/mssql/bin/mssql-conf setup

【9】sql server 在linux下的升級、回滾、卸載

升級mssql-server包到最新版本

sudo yum update mssql-server

該命令下載最新包,並替換/opt/mssql/下的二進制文件。用戶生成的數據庫和系統數據庫不會受該操作的影響。

 

回滾SQL Server到之前的某個版本

1. 識別你想降級到的SQL Server版本號。對應的版本號列表,查看這里。(https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-release-notes?view=sql-server-linux-2017

2. 降級到之前的一個SQL Server版本。將<version_number>替換為步驟1中的版本號。

sudo yum downgrade mssql-server-<version_number>.x86_64
 

注意:只支持降級到相同主要版本內的一個版本,像SQL Server 2017。

檢查安裝的SQL Server版本

為了驗證當前Linux上運行的SQL Server的版本,使用如下過程:

1. 安裝SQL Server命令行工具。

2. 運行如下命令:

sqlcmd -S localhost -U SA -Q 'select @@VERSION'

卸載SQL Server

為了移除Linux上運行的mssql-server包,使用如下命令:

sudo yum remove mssql-server
 

移除包並不會刪除生成的數據庫文件。如果你想刪除數據庫文件,可以使用如下命令:

sudo rm -rf /var/opt/mssql/

參考引用文檔

本文絕大部分內容、腳本 均轉載引用自:https://blog.51cto.com/ultrasql/category1.html

 官網:https://docs.microsoft.com/zh-cn/sql/linux/sql-server-linux-overview?view=sql-server-ver15

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM