Linux 版本 SQL Server 的快速安裝

  • 2019 年 12 月 26 日
  • 筆記

SQL Server 2017 版本已經支援 Linux 安裝了,出來了很長時間,我還沒有實現過在 Linux 上面的應用,包括安裝和高可用配置。本文就先嘗試完成 Linux 版 SQL Server 的安裝。

經常在 Windows 下安裝 SQL Server 失敗的同學們有福了,因為按照下面的步驟,不超過 15 分鐘,你就可以直接體驗 SQL 開發之旅!

SQL Server 在 CentOS 上的安裝

步驟:

  1. 安裝鏡像
  2. 執行配置文件
  3. 增加防火牆對 SQL Server 指定埠的支援
  4. 安裝管理工具

注意點:

1 安裝庫的配置:

安裝鏡像的時候,正確處理依賴軟體包:選用的 Linux 版本是 Centos 7, 微軟的官方文檔中並沒有給出針對 Centos 7 的安裝指南,但 Centos 是基於 RedHat 衍生出來的版本,因此嘗試使用 RedHat 的安裝方法,應該也奏效。

固然可以離線安裝 SQL Server, 只要對 SQL Server On Linux 的包依賴都自信能搞定。為了方便起見,我在這裡還是堅持用了配置 Repository 的方式,讓微軟搞定這些依賴關係。不得不說,有資本的微軟在保障安裝流暢方面做到了極致,即使我在使用 Python 這麼流行的語言框架搭建上面,也沒有得到過如此絲滑的在線安裝體驗。

這裡不得不提一下對 YUM 的配置了。YUM 管理的就是包依賴,其實質是對軟體的依賴做本地快取,方便安裝的時候,能自動化處理包依賴關係。

配置 Installation Online Repository:

微軟已經為我們配置好了 repo 文件,將其複製到 /etc/yum.repos.d下即可:

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

在線安裝 SQL Server

yum install mssql-server -y

安裝之前先配置足夠的記憶體,過小的記憶體將不能順利安裝,4GB 以上夠用

sqlservr: This program requires a machine with at least 3250 megabytes of memory. Microsoft(R) SQL Server(R) setup failed with error code 1.

善後工作

/opt/mssql/bin/sqlservr-setup

根據最新的 MSDN 文檔解釋,設置 SA 密碼和版本,應該是執行:

/opt/mssql/bin/mssql-conf setup

接下來是一路 Next, 選擇版本和設置 SA 密碼

==思考:==

並沒有指定 SQL Server 安裝在 /opt/mssql 目錄下,是怎麼配置安裝路徑的?

一開始提的問題,在安裝過程中已經得到了解釋,因為這是默認路徑。

重新啟動 SQL Server Service 使其設置生效:

+--------------------------------------------------------------+  Please run 'sudo /opt/mssql/bin/mssql-conf setup'  to complete the setup of Microsoft SQL Server  +--------------------------------------------------------------+SQL Server needs to be restarted in order to apply this setting. Please run  'systemctl restart mssql-server.service'.   Verifying  : mssql-server-14.0.3030.27-1.x86_64

檢測資料庫運行狀態

systemctl status mssql-server

默認情況下,Linux 的埠是被防火牆給屏蔽的,因此需要打開防火牆對埠的允許,才能使得遠程客戶端訪問本機服務。

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

2 安裝命令行管理工具

在沒有SSMS(sql server management studio)的環境中,需要安裝一些可執行 SQL 的客戶端工具,以便用來創建資料庫對象以及操作數據。常用的工具有 sqlcmd 和 bcp.

curl -o /etc/yum.repos.d/msprod.repo https://packages.microsoft.com/config/rhel/7/prod.repo

眾所周知,任何命令都需要在 PATH 環境中指定路徑,才能直接運行,因此需要將 mssql-tools 的執行路徑添加到本地或者全局的 PATH 文件中去。路徑是默認的 /opt/mssql-tools/bin/

測試 SA 賬戶的連接:

sqlcmd -S localhost -U SA -P '<Password>'

如果碰到連接錯誤,說明需要換個方式登錄本機,即使用 127.0.0.1

Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : Login timeout expired.  Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : TCP Provider: Error code 0x102.  Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online..

方便快捷的安裝,如果微軟推出一個 community edition, 我估計就沒 mysql 啥事兒了。當然是玩笑話,mysql 有其自己的特性,比如插件式存儲引擎,別的資料庫沒有辦法取代。

其他客戶端工具:

除了 sqlcmd, bcp, SSMS (on Windows),還可以使用以下工具:

  • SQL Operations Studio
  • mssql-cli
  • Visual Studio Code

上述三種都可以跨平台使用。首推 SQL Operations Studio(SOS), 2017年11月出了第一個版本,他的優點在於可視化的 DashBoard, 平時要自己寫報表來監控伺服器以及資料庫健康狀態,現在用這個集成工具安裝插件就可以實現了。

讓我們感受下 SOS(SQL Operations Studio)的輕便和強大

下面一篇即將討論 Always On Availability Group 在 Linux 上的實現,SQL Server 已經支援 8 個 從庫的設計架構,非常值得期待和體驗。