mssql安装之后创建的数据库文件需要中默认的目录下转移到 '/mnt/mssql/data'目录下面。原因:'/mnt' 为挂着的磁盘,后期可以随时扩容, 避免mssql数据库文件过大导致系统盘空间占满。
安装过程主要分两步, 第一步安装mssql。 第二部创建数据库然后转移数据库文件 *.mdf *.ldf
第一步
安装 mssql
根据官网的提示进行mssql的安装
详细教程如下 https://docs.microsoft.com/zh-cn/sql/linux/quickstart-install-connect-red-hat?view=sql-server-linux-2017
1.下载 Microsoft SQL Server Red Hat 存储库配置文件:
$sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/7/mssql-server-2017.repo
2.运行以下命令,安装 SQL Server:
$sudo yum install -y mssql-server
3.软件包安装完成后,运行mssql conf 安装命令并按照操作提示设置 SA 密码,并选择你的版本。
$sudo /opt/mssql/bin/mssql-conf setup
--提示:mssql版本选择develop版本 (免费,不可生产模式)
4.配置完成后,请验证服务是否正在运行:
$systemctl status mssql-server
安装 SQL Server 命令行工具
1.下载 Microsoft Red Hat 存储库配置文件。
$sudo curl -o /etc/yum.repos.d/msprod.repo https://packages.microsoft.com/config/rhel/7/prod.repo
2.如果你有以前版本的mssql 工具安装,请删除任何较旧的 unixODBC 程序包。
$sudo yum remove unixODBC-utf16 unixODBC-utf16-devel
3.运行以下命令以安装mssql 工具与 unixODBC 开发人员包。
$sudo yum install -y mssql-tools unixODBC-devel
为方便起见,添加/opt/mssql-tools/bin/
到你的PATH境变量。 这使您可以运行工具,而无需指定完整路径。 在登录会话和交互式/非登录会话中运行以下命令以修改PATH:
$echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
$echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
$source ~/.bashrc
本地连接
1.使用 SQL Server 名称 (-S),用户名 (-U) 和密码 (-P) 的参数运行 sqlcmd。 在本教程中,用户进行本地连接,因此服务器名称为 localhost。 用户名为 SA,密码是在安装过程中为 SA 帐户提供的密码。
$sqlcmd -S localhost -U SA -P '<YourPassword>'
- 如果成功,应会显示 sqlcmd 命令提示符:
1>
OK,现在你就可以SHOW 你的SQL语句了。 你可以通过SQL 创建数据库,创建表, 插入数据 和 查询数据。另外,如果输入SQL语句之后敲回车语句并不会马上执行,需要输入 GO
+ 回车键 才能执行SQL预计
3.退出 sqlcmd 命令提示符
$QUIT
第二步
通过上面的安装数据库 我们可以在 /var/opt/mssql/data/
看到上一步创建的数据库文件。 接下来我们需要把新创建的数据库文件.mdf 和 .ldf
转移到 /mnt/mssql/data/
目录下面 然后更改/mnt/mssql
目录的权限和所有者 为 mssql。mssql用户和用户组是在安装mssql的时候自动创建的,否则mssql数据库服务没有权限对/mnt/mssql
目录进行读取和写入权限。到时数据库文件加载失败
假如我们创建的数据库名称为 myfirstdb
- 转移数控文件
$cp -R /var/opt/mssql/data/myfirstdb.mdf /mnt/mssql/data/
$cp -R /var/opt/mssql/data/myfirstdb.ldf /mnt/mssql/data/
- 更改
/mnt/mssql
目前权限
$ cd /mnt
$chmod -R 755 ./mssql
$chown -R mssql mssql
$chgrp -R mssql mssql
执行完以上命令之后我可以通过ls -l
查看一下目前权限
$ ls -ll /mnt/mssql
drwxr-xr-x 3 mssql mssql 4096 6月 3 15:56 mssql
- 进入本地数据库中,转移数据库的文件目录并挂起
3.1 进入数据库
$ sqlcmd -S localhost -U SA -P ‘数据库密码’
3.2 修改数据库文件
ALTER DATABASE [myfirstdb] MODIFY FILE
(
NAME = [myfirstdb],
FILENAME = '/mnt/mssql/data/myfirstdb.mdf'
)
GO
ALTER DATABASE [myfirstdb] MODIFY FILE
(
NAME = [myfirstdb_log],
FILENAME = '/mnt/mssql/data/myfirstdb_log.ldf'
)
GO
quit
3.3 重新启动数据库
systemctl restart mssql-server
3.4 再次进入本地的数据库,然后通过命令挂起数据库
alter database myfirstdb set offline
go
alter database myfirstdb set online
到目前为止 已经大功告成