【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. 將該腳本修改為可執行。
4. 運行腳本。
【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 版本或產品密鑰。 可能的值包括: |
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 端口。
示例: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,請用單引號使用以下語法:
如果在 Windows 上運行 Docker,請用雙引號引起來使用以下語法: