目录
文章目录
1. 概述
SQL Server(mssql-server)是一个可扩展的、高性能的、为分布式客户机/服务器计算所设计的数据库管理系统,实现了与WindowsNT的有机结合,提供了基于事务的企业级信息管理系统方案,使用非常广泛,那么如何在Linux上安装SQLServer呢?
2. 环境准备
2.1 机器准备
服务器ip | 主机名 | 系统版本 |
---|---|---|
192.168.2.25 | myhost | Centos7.2 |
2.2 系统环境
[root@myhost ~]# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
[root@myhost ~]# firewall-cmd --state #查看防火墙的状态
running
[root@myhost ~]# firewall-cmd --list-ports #查看防火墙已经开放的端口
[root@myhost ~]# firewall-cmd --list-services #查看防火墙开放的服务
dhcpv6-client ssh
#httpd服务默认的端口是80,防火墙允许80/tcp端口访问
[root@myhost ~]# firewall-cmd --zone=public --permanent --add-port=80/tcp
success
#SQLServer服务端默认的端口是1433,防火墙允许1433/tcp端口访问
[root@myhost ~]# firewall-cmd --zone=public --permanent --add-port=1433/tcp
success
[root@myhost ~]# firewall-cmd --reload #重新加载防火墙配置
success
[root@myhost ~]# setenforce 0 && getenforce
Permissive
[root@myhost ~]# sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/sysconfig/selinux
[root@myhost ~]# cat /etc/sysconfig/selinux
[root@myhost ~]# ping www.baidu.com
PING www.a.shifen.com (220.181.38.150) 56(84) bytes of data.
64 bytes from 220.181.38.150: icmp_seq=1 ttl=52 time=33.6 ms
64 bytes from 220.181.38.150: icmp_seq=2 ttl=52 time=34.8 ms
64 bytes from 220.181.38.150: icmp_seq=3 ttl=52 time=35.2 ms
......
3. 下载安装SQL Server
3.1 检查系统是否已经安装了SQL Server(mssql-server)
[root@myhost ~]# rpm -qa |grep mssql-server
3.2 下载SQL Server存储库配置文件
[root@myhost ~]# cd /etc/yum.repos.d/
[root@myhost yum.repos.d]# ll
总用量 28
-rw-r--r--. 1 root root 1664 12月 9 2015 CentOS-Base.repo
-rw-r--r--. 1 root root 1309 12月 9 2015 CentOS-CR.repo
-rw-r--r--. 1 root root 649 12月 9 2015 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root 290 12月 9 2015 CentOS-fasttrack.repo
-rw-r--r--. 1 root root 630 12月 9 2015 CentOS-Media.repo
-rw-r--r--. 1 root root 1331 12月 9 2015 CentOS-Sources.repo
-rw-r--r--. 1 root root 1952 12月 9 2015 CentOS-Vault.repo
[root@myhost yum.repos.d]# curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/7/mssql-server-2017.repo
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 232 100 232 0 0 337 0 --:--:-- --:--:-- --:--:-- 338
[root@myhost yum.repos.d]# ll
总用量 32
-rw-r--r--. 1 root root 1664 12月 9 2015 CentOS-Base.repo
-rw-r--r--. 1 root root 1309 12月 9 2015 CentOS-CR.repo
-rw-r--r--. 1 root root 649 12月 9 2015 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root 290 12月 9 2015 CentOS-fasttrack.repo
-rw-r--r--. 1 root root 630 12月 9 2015 CentOS-Media.repo
-rw-r--r--. 1 root root 1331 12月 9 2015 CentOS-Sources.repo
-rw-r--r--. 1 root root 1952 12月 9 2015 CentOS-Vault.repo
-rw-r--r--. 1 root root 232 8月 24 11:24 mssql-server.repo ####
[root@myhost yum.repos.d]# cat mssql-server.repo
[packages-microsoft-com-mssql-server-2017]
name=packages-microsoft-com-mssql-server-2017
baseurl=https://packages.microsoft.com/rhel/7/mssql-server-2017/
enabled=1
gpgcheck=1
gpgkey=https://packages.microsoft.com/keys/microsoft.asc
3.3 yum安装SQL Server
[root@myhost yum.repos.d]# yum clean all
已加载插件:fastestmirror
正在清理软件源: base extras packages-microsoft-com-mssql-server-2017 updates
Cleaning up list of fastest mirrors
[root@myhost yum.repos.d]# yum makecache
[root@myhost yum.repos.d]# yum install -y mssql-server
[root@myhost ~]# rpm -qa |grep mssql-server
mssql-server-14.0.3401.7-2.x86_64
#查看SQL Server安装文件
[root@myhost ~]# rpm -ql mssql-server-14.0.3401.7-2.x86_64
/opt/mssql/bin
/opt/mssql/bin/compress-dump.sh
/opt/mssql/bin/crash-support-functions.sh
/opt/mssql/bin/generate-sql-dump.sh
/opt/mssql/bin/handle-crash.sh
/opt/mssql/bin/mssql-conf ######
/opt/mssql/bin/paldumper
/opt/mssql/bin/sqlservr
/opt/mssql/lib
/opt/mssql/lib/libc++.so.1
/opt/mssql/lib/libc++abi.so.1
/opt/mssql/lib/libsqlvdi.so
/opt/mssql/lib/libunwind-x86_64.so.8
/opt/mssql/lib/libunwind.so.8
/opt/mssql/lib/loc
/opt/mssql/lib/loc/de_DE
/opt/mssql/lib/loc/de_DE/LC_MESSAGES
/opt/mssql/lib/loc/de_DE/LC_MESSAGES/sqlservr.mo
/opt/mssql/lib/loc/en_US
/opt/mssql/lib/loc/en_US/LC_MESSAGES
/opt/mssql/lib/loc/en_US/LC_MESSAGES/sqlservr.mo
/opt/mssql/lib/loc/es_ES
/opt/mssql/lib/loc/es_ES/LC_MESSAGES
/opt/mssql/lib/loc/es_ES/LC_MESSAGES/sqlservr.mo
/opt/mssql/lib/loc/fr_FR
/opt/mssql/lib/loc/fr_FR/LC_MESSAGES
/opt/mssql/lib/loc/fr_FR/LC_MESSAGES/sqlservr.mo
/opt/mssql/lib/loc/it_IT
/opt/mssql/lib/loc/it_IT/LC_MESSAGES
/opt/mssql/lib/loc/it_IT/LC_MESSAGES/sqlservr.mo
/opt/mssql/lib/loc/ja_JP
/opt/mssql/lib/loc/ja_JP/LC_MESSAGES
/opt/mssql/lib/loc/ja_JP/LC_MESSAGES/sqlservr.mo
/opt/mssql/lib/loc/ko_KR
/opt/mssql/lib/loc/ko_KR/LC_MESSAGES
/opt/mssql/lib/loc/ko_KR/LC_MESSAGES/sqlservr.mo
/opt/mssql/lib/loc/pt_BR
/opt/mssql/lib/loc/pt_BR/LC_MESSAGES
/opt/mssql/lib/loc/pt_BR/LC_MESSAGES/sqlservr.mo
/opt/mssql/lib/loc/ru_RU
/opt/mssql/lib/loc/ru_RU/LC_MESSAGES
/opt/mssql/lib/loc/ru_RU/LC_MESSAGES/sqlservr.mo
/opt/mssql/lib/loc/zh_CN
/opt/mssql/lib/loc/zh_CN/LC_MESSAGES
/opt/mssql/lib/loc/zh_CN/LC_MESSAGES/sqlservr.mo
/opt/mssql/lib/loc/zh_TW
/opt/mssql/lib/loc/zh_TW/LC_MESSAGES
/opt/mssql/lib/loc/zh_TW/LC_MESSAGES/sqlservr.mo
/opt/mssql/lib/mssql-conf
/opt/mssql/lib/mssql-conf/checkinstall.sh
/opt/mssql/lib/mssql-conf/checkrunninginstance.sh
/opt/mssql/lib/mssql-conf/collations.txt
/opt/mssql/lib/mssql-conf/invokesqlservr.sh
/opt/mssql/lib/mssql-conf/loc
/opt/mssql/lib/mssql-conf/loc/mo
/opt/mssql/lib/mssql-conf/loc/mo/mssql-conf-de_DE.mo
/opt/mssql/lib/mssql-conf/loc/mo/mssql-conf-en_US.mo
/opt/mssql/lib/mssql-conf/loc/mo/mssql-conf-es_ES.mo
/opt/mssql/lib/mssql-conf/loc/mo/mssql-conf-fr_FR.mo
/opt/mssql/lib/mssql-conf/loc/mo/mssql-conf-it_IT.mo
/opt/mssql/lib/mssql-conf/loc/mo/mssql-conf-ja_JP.mo
/opt/mssql/lib/mssql-conf/loc/mo/mssql-conf-ko_KR.mo
/opt/mssql/lib/mssql-conf/loc/mo/mssql-conf-pt_BR.mo
/opt/mssql/lib/mssql-conf/loc/mo/mssql-conf-ru_RU.mo
/opt/mssql/lib/mssql-conf/loc/mo/mssql-conf-zh_CN.mo
/opt/mssql/lib/mssql-conf/loc/mo/mssql-conf-zh_TW.mo
/opt/mssql/lib/mssql-conf/mssql-conf.py
/opt/mssql/lib/mssql-conf/mssqlconfhelper.py
/opt/mssql/lib/mssql-conf/mssqlsettings.py
/opt/mssql/lib/mssql-conf/mssqlsettingsmanager.py
/opt/mssql/lib/mssql-conf/set-collation.sh
/opt/mssql/lib/secforwarderxplat.sfp
/opt/mssql/lib/sqlagent.sfp
/opt/mssql/lib/sqlservr.sfp
/opt/mssql/lib/system.certificates.sfp
/opt/mssql/lib/system.common.sfp
/opt/mssql/lib/system.netfx.sfp
/opt/mssql/lib/system.security.sfp
/opt/mssql/lib/system.sfp
/usr/lib/systemd/system/mssql-server.service
/usr/share/doc/mssql-server/THIRDPARTYNOTICES.TXT
/usr/share/doc/mssql-server/THIRDPARTYNOTICES_UBUNTU_CONTAINER_16.04.txt
/usr/share/doc/mssql-server/license_Eval_Linux.txt
/usr/share/doc/mssql-server/license_Eval_Linux_Chinese (Simplified).txt
/usr/share/doc/mssql-server/license_Eval_Linux_Chinese (Traditional).txt
/usr/share/doc/mssql-server/license_Eval_Linux_French.txt
/usr/share/doc/mssql-server/license_Eval_Linux_German.txt
/usr/share/doc/mssql-server/license_Eval_Linux_Italian.txt
/usr/share/doc/mssql-server/license_Eval_Linux_Japanese.txt
/usr/share/doc/mssql-server/license_Eval_Linux_Korean.txt
/usr/share/doc/mssql-server/license_Eval_Linux_Portuguese (Brazil).txt
/usr/share/doc/mssql-server/license_Eval_Linux_Russian.txt
/usr/share/doc/mssql-server/license_Eval_Linux_Spanish.txt
/usr/share/doc/mssql-server/license_Std_Linux.txt
/usr/share/doc/mssql-server/license_Std_Linux_Chinese (Simplified).txt
/usr/share/doc/mssql-server/license_Std_Linux_Chinese (Traditional).txt
/usr/share/doc/mssql-server/license_Std_Linux_French.txt
/usr/share/doc/mssql-server/license_Std_Linux_German.txt
/usr/share/doc/mssql-server/license_Std_Linux_Italian.txt
/usr/share/doc/mssql-server/license_Std_Linux_Japanese.txt
/usr/share/doc/mssql-server/license_Std_Linux_Korean.txt
/usr/share/doc/mssql-server/license_Std_Linux_Portuguese (Brazil).txt
/usr/share/doc/mssql-server/license_Std_Linux_Russian.txt
/usr/share/doc/mssql-server/license_Std_Linux_Spanish.txt
/usr/share/man/man1/mssql-conf.1.gz
/usr/share/man/man1/sqlservr.1.gz
3.4 执行命令安装数据库
[root@myhost ~]# ll /opt/mssql/bin/mssql-conf[root@myhost ~]# ll /opt/mssql/bin/mssql-conf
-rwxrwxr-x. 1 root root 277 6月 28 23:35 /opt/mssql/bin/mssql-conf
[root@myhost ~]# /opt/mssql/bin/mssql-conf setup #此处需要选择SQLServer版本(一般选择开发版本:免费,无生产许可),语言,以及系统管理员的密码,密码应符合要求(备注:请确保为 系统管理员SA 帐户指定强密码最少 8 个字符,包括大写和小写字母、十进制数字和/或非字母数字符号)。
选择 SQL Server 的一个版本:
1) Evaluation (免费,无生产许可,180 天限制)
2) Developer (免费,无生产许可)
3) Express (免费)
4) Web (付费版)
5) Standard (付费版)
6) Enterprise (付费版)
7) Enterprise Core (付费版)
8) 我通过零售渠道购买了许可证并具有要输入的产品密钥。
可在以下位置找到有关版本的详细信息:
https://go.microsoft.com/fwlink/?LinkId=852748&clcid=0x804
使用此软件的付费版本需要通过以下途径获取单独授权
Microsoft 批量许可计划。
选择付费版本即表示你具有适用的
要安装和运行此软件的就地许可证数量。
输入版本(1-8): 2
可以在以下位置找到此产品的许可条款:
/usr/share/doc/mssql-server 或从以下位置下载:
https://go.microsoft.com/fwlink/?LinkId=855862&clcid=0x804
可以从以下位置查看隐私声明:
https://go.microsoft.com/fwlink/?LinkId=853010&clcid=0x804
接受此许可条款吗? [Yes/No]:yes
选择 SQL Server 的语言:
(1) English
(2) Deutsch
(3) Español
(4) Français
(5) Italiano
(6) 日本語
(7) 한국어
(8) Português
(9) Русский
(10) 中文 – 简体
(11) 中文 (繁体)
输入选项 1-11:10
输入 SQL Server 系统管理员密码:
确认 SQL Server 系统管理员密码:
正在配置 SQL Server...
ForceFlush is enabled for this instance.
ForceFlush feature is enabled for log durability.
Created symlink from /etc/systemd/system/multi-user.target.wants/mssql-server.service to /usr/lib/systemd/system/mssql-server.service.
安装程序已成功完成。SQL Server 正在启动。
3.5 数据库文件在磁盘上的存储形式
- 主数据库文件:*.mdf
- 辅助数据文件:*.ndf
- 日志文件:*.ldf
- 文件组
[root@myhost ~]# find / -name *.mdf
/var/opt/mssql/data/master.mdf
/var/opt/mssql/data/model.mdf
/var/opt/mssql/data/msdbdata.mdf
/var/opt/mssql/data/tempdb.mdf
[root@myhost ~]# find / -name *.ldf
/var/opt/mssql/data/mastlog.ldf
/var/opt/mssql/data/modellog.ldf
/var/opt/mssql/data/msdblog.ldf
/var/opt/mssql/data/templog.ldf
[root@myhost ~]# find / -name *.ndf
4. 查看SQL Server是否启动成功
[root@myhost ~]# systemctl status mssql-server.service
● mssql-server.service - Microsoft SQL Server Database Engine
Loaded: loaded (/usr/lib/systemd/system/mssql-server.service; enabled; vendor preset: disabled)
Active: active (running) since 二 2021-08-24 11:38:15 CST; 3min 24s ago
Docs: https://docs.microsoft.com/en-us/sql/linux
Main PID: 7777 (sqlservr)
CGroup: /system.slice/mssql-server.service
├─7777 /opt/mssql/bin/sqlservr
└─7805 /opt/mssql/bin/sqlservr
8月 24 11:38:19 myhost sqlservr[7777]: 2021-08-24 11:38:18.99 spid5s 2021-08-24 11:38:18.99 spid9s Recovery is...uired.
8月 24 11:38:19 myhost sqlservr[7777]: 2021-08-24 11:38:18.99 spid5s Recovery is writing a checkpoint in database '...uired.
8月 24 11:38:19 myhost sqlservr[7777]: 2021-08-24 11:38:19.11 spid9s 2021-08-24 11:38:19.11 spid9s Polybase fe...abled.
8月 24 11:38:19 myhost sqlservr[7777]: 2021-08-24 11:38:19.11 spid9s 2021-08-24 11:38:19.11 spid9s Clearing te...abase.
8月 24 11:38:19 myhost sqlservr[7777]: 2021-08-24 11:38:19.48 spid9s 2021-08-24 11:38:19.48 spid9s Starting up...mpdb'.
8月 24 11:38:19 myhost sqlservr[7777]: 2021-08-24 11:38:19.67 spid9s tempdb 2021-08-24 11:38:19.67 spid9s The ...le(s).
8月 24 11:38:19 myhost sqlservr[7777]: 2021-08-24 11:38:19.68 spid22s Service Broker 2021-08-24 11:38:19.68 spid22s ...state.
8月 24 11:38:19 myhost sqlservr[7777]: 2021-08-24 11:38:19.68 spid22s Database Mirroring 2021-08-24 11:38:19.68 spid...state.
8月 24 11:38:19 myhost sqlservr[7777]: 2021-08-24 11:38:19.71 spid22s 2021-08-24 11:38:19.71 spid22s Service Bro...arted.
8月 24 11:38:19 myhost sqlservr[7777]: 2021-08-24 11:38:19.79 spid5s 2021-08-24 11:38:19.79 spid5s Recovery is...uired.
Hint: Some lines were ellipsized, use -l to show in full.
[root@myhost ~]# ps -ef |grep mssql
mssql 7777 1 0 11:38 ? 00:00:00 /opt/mssql/bin/sqlservr
mssql 7805 7777 3 11:38 ? 00:00:07 /opt/mssql/bin/sqlservr
root 8427 6538 0 11:42 pts/1 00:00:00 grep --color=auto mssql
[root@myhost ~]# netstat -lntup |grep sqlservr
tcp 0 0 0.0.0.0:1433 0.0.0.0:* LISTEN 7805/sqlservr
tcp 0 0 127.0.0.1:1434 0.0.0.0:* LISTEN 7805/sqlservr
tcp6 0 0 :::1433 :::* LISTEN 7805/sqlservr
tcp6 0 0 ::1:1434 :::* LISTEN 7805/sqlservr
5. 用navicat测试是否能够连接
注意:有时候Navicat并没有初始化安装sqlncli, 所以连接的时候会报 没有默认驱动,如图:
解决方法:先关闭Navicat,然后找到navicat安装目录(我这里的目录是: F:\Program Files (x86)\PremiumSoft\Navicat Premium 12)在安装目录中找到对应驱动sqlncli(计算机是64位所以选择sqlncli_x64.msi进行安装即可,安装过程省略)。
上述驱动安装完毕之后,再次打开Navicat,再次进行连接测试
注意:sqlsever安装时默认的系统管理员账户不是root,而是sa或SA。
以下步骤是使用Navicat连接sqlsever服务器进行简单操作数据库: