(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

 
posted @ 2020-03-17 11:09  郭大侠1  阅读(1797)  评论(0编辑  收藏  举报