(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. 将该脚本修改为可执行。
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,请用双引号引起来使用以下语法: