Microsoft SQL Server 2014 Expressをインストールする
リモートからアクセスできて、GUIで調整可能とするなら、Express with Tools。
上記に加え全文検索もしたいなら、Express with Advanced Services。
って感じ。
詳細https://msdn.microsoft.com/ja-jp/library/cc645993(v=sql.120).aspx
メモリーは1GBが上限で、データファイルの上限は10GB。最大50個のインスタンスが作れる。
一つのインスタンスに複数のデータベースが作成できて、そのデータベースのファイルも複数作れる。
10GBの上限はいったいどこに掛かるのやら?
何れにしろ、メモリーが1GB上限なので、逃げ道を見つけて大きなデータベースを作れたとしても微妙かと。
https://www.microsoft.com/ja-jp/download/details.aspx?id=42299
数多あるインストール教示サイトに委ねる。
インストール直後は、リモートからのアクセスが拒否される。
実際にはTCPによる通信が不可。その設定を施す場所がSQLServer 構成マネージャである。
CentOS7.4に「SQL Server on Linux」をインストールしてみた
参照先 https://docs.microsoft.com/ja-jp/sql/linux/sql-server-linux-overview
まずはリポジトリを取得する
[root@c ~]# curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/7/mssql-server-2017.repo
[root@c ~]# cat /etc/yum.repos.d/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
[root@c ~]#
次にyumでパッケージ(mssql-server)をインストール
[root@c ~]# yum list |grep packages-microsoft-com-mssql-server-2017
mssql-server.x86_64 14.0.3015.40-1 packages-microsoft-com-mssql-server-2017
mssql-server-agent.x86_64 14.0.3015.40-1 packages-microsoft-com-mssql-server-2017
mssql-server-fts.x86_64 14.0.3015.40-1 packages-microsoft-com-mssql-server-2017
mssql-server-ha.x86_64 14.0.3015.40-1 packages-microsoft-com-mssql-server-2017
mssql-server-is.x86_64 14.0.3015.40-1 packages-microsoft-com-mssql-server-2017
[root@c ~]# yum install -y mssql-server
インストールしたパッケージの展開様相は「rpm -qali mssql-server」で見れた
[root@c ~]# rpm -qali mssql-server
Name : mssql-server
Version : 14.0.3015.40
Release : 1
Architecture: x86_64
Install Date: 2018年01月30日 20時53分24秒
Group : Unspecified
:
/opt/mssql/bin
/opt/mssql/bin/compress-dump.sh
:
/opt/mssql/lib/system.sfp
/usr/lib/systemd/system/mssql-server.service
/usr/share/doc/mssql-server/THIRDPARTYNOTICES.TXT
:
[root@c ~]#
とsystemctlに対応して、/opt/mssqlにプログラム関係が置かれているみたい。
っで、セットアップを続ける
[root@c ~]# echo $LANG
ja_JP.UTF-8
[root@c ~]#
[root@c ~]# /opt/mssql/bin/mssql-conf setup
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=0x411
このソフトウェアの有料エディションを使用するには、個別のライセンスを以下から取得する必要があります
Microsoft ボリューム ライセンス プログラム。
有料エディションを選択することは、
このソフトウェアをインストールおよび実行するための適切な数のライセンスがあることを確認していることになります。
エディションを入力してください(1-8): 3 <<--- ここではExpress版を使用するので「3」を入力
この製品のライセンス条項は
/usr/share/doc/mssql-server で参照できるほか、次の場所からダウンロードすることもできます:
https://go.microsoft.com/fwlink/?LinkId=855862&clcid=0x411
プライバシーに関する声明は、次の場所で確認できます:
https://go.microsoft.com/fwlink/?LinkId=853010&clcid=0x411
ライセンス条項に同意しますか? [Yes/No]:Yes <<--- ライセンス条項に承知するならYesと入力
SQL Server の言語の選択:
(1) English
(2) Deutsch
(3) Espanol
(4) Francais
(5) Italiano
(6) 日本語
(7) ???
(8) Portugues
(9) Русский
(10) 中文 ? ?体
(11) 中文 (繁体)
オプション 1-11 を入力: 6 <<--- 日本語で操作したいので「6」を入力
SQL Server システム管理者パスワードを入力してください: <<--- いわゆる「SA」のパスワード
SQL Server システム管理者パスワードを確認入力してください:
SQL Server を構成しています...
Created symlink from /etc/systemd/system/multi-user.target.wants/mssql-server.service to /usr/lib/systemd/system/mssql-server.service.
セットアップは正常に完了しました。SQL Server を起動しています。
[root@c ~]#
これで完了
稼働プロセスを確認すると
[root@c ~]# ps -ef |grep mssql
mssql 13870 1 5 21:00 ? 00:00:01 /opt/mssql/bin/sqlservr
mssql 13898 13870 91 21:00 ? 00:00:17 /opt/mssql/bin/sqlservr
root 14055 15895 0 21:00 pts/2 00:00:00 grep --color=auto mssql
[root@c ~]#
な感じでした。
windows版では#v0f62e8dにあるように規定で外部からのアクセスが不可になっているが、
こちらLinux版はOSのfirewalldに任せているようである。
[root@c ~]# lsof -i:1433
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sqlservr 13898 mssql 124u IPv4 638017 0t0 TCP *:ms-sql-s (LISTEN)
[root@c ~]# netstat -antu | grep 1433
tcp 0 0 0.0.0.0:1433 0.0.0.0:* LISTEN
[root@c ~]#
mssqlの規定portは1433
これでmssql serverは完了
次に作ったこのmssql on linuxにアクセスしてみる。それにはクライアントツールが必要で
windowsにインストールした「SQL Server Management Studio (SSMS)」からでもアクセス可能である。
っが、まずはローカルで稼働するクライアントツールをインストールする
これもリポジトリで提供されていて
[root@c ~]# curl -o /etc/yum.repos.d/msprod.repo https://packages.microsoft.com/config/rhel/7/prod.repo
[root@c ~]# cat /etc/yum.repos.d/msprod.repo
[packages-microsoft-com-prod]
name=packages-microsoft-com-prod
baseurl=https://packages.microsoft.com/rhel/7/prod/
enabled=1
gpgcheck=1
gpgkey=https://packages.microsoft.com/keys/microsoft.asc
[root@c ~]#
[root@c ~]# yum list | grep packages-microsoft-com-prod
aspnetcore-store-2.0.0.x86_64 2.0.0-1 packages-microsoft-com-prod
aspnetcore-store-2.0.3.x86_64 2.0.3-1 packages-microsoft-com-prod
aspnetcore-store-2.0.5.x86_64 2.0.5-1 packages-microsoft-com-prod
blobfuse.x86_64 0.2.2-1 packages-microsoft-com-prod
dbfs.x86_64 0.1.5-0 packages-microsoft-com-prod
dotnet-host.x86_64 2.0.5-1 packages-microsoft-com-prod
dotnet-hostfxr-2.0.0.x86_64 2.0.0-1 packages-microsoft-com-prod
dotnet-hostfxr-2.0.3.x86_64 2.0.3-1 packages-microsoft-com-prod
dotnet-hostfxr-2.0.4.x86_64 2.0.4-1 packages-microsoft-com-prod
dotnet-hostfxr-2.0.5.x86_64 2.0.5-1 packages-microsoft-com-prod
dotnet-hosting-2.0.0.x86_64 2.0.0-1 packages-microsoft-com-prod
dotnet-hosting-2.0.3.x86_64 2.0.3-1 packages-microsoft-com-prod
dotnet-hosting-2.0.4.x86_64 2.0.4-1 packages-microsoft-com-prod
dotnet-hosting-2.0.5.x86_64 2.0.5-1 packages-microsoft-com-prod
dotnet-runtime-2.0.0.x86_64 2.0.0-1 packages-microsoft-com-prod
dotnet-runtime-2.0.3.x86_64 2.0.3-1 packages-microsoft-com-prod
dotnet-runtime-2.0.4.x86_64 2.0.4-1 packages-microsoft-com-prod
dotnet-runtime-2.0.5.x86_64 2.0.5-1 packages-microsoft-com-prod
dotnet-sdk-2.0.0.x86_64 2.0.0-1 packages-microsoft-com-prod
dotnet-sdk-2.0.2.x86_64 2.0.2-1 packages-microsoft-com-prod
dotnet-sdk-2.0.3.x86_64 2.0.3-1 packages-microsoft-com-prod
dotnet-sdk-2.1.2.x86_64 2.1.2-1 packages-microsoft-com-prod
dotnet-sdk-2.1.3.x86_64 2.1.3-1 packages-microsoft-com-prod
dotnet-sdk-2.1.4.x86_64 2.1.4-1 packages-microsoft-com-prod
lsvmtools.x86_64 1.0.0-1 packages-microsoft-com-prod
microsoft-mlserver-adminutil-9.2.x86_64 9.2.1-1 packages-microsoft-com-prod
microsoft-mlserver-all-9.2.1.x86_64 9.2.1.1360-1 packages-microsoft-com-prod
microsoft-mlserver-computenode-9.2.x86_64 9.2.1-1 packages-microsoft-com-prod
9.2.1-1 packages-microsoft-com-prod
microsoft-mlserver-dotnet-9.2.x86_64 9.2.1-1 packages-microsoft-com-prod
microsoft-mlserver-hadoop-9.2.1.x86_64 9.2.1.1360-1 packages-microsoft-com-prod
microsoft-mlserver-mlm-py-9.2.1.x86_64 9.2.1.1360-1 packages-microsoft-com-prod
microsoft-mlserver-mlm-r-9.2.1.x86_64 9.2.1.1360-1 packages-microsoft-com-prod
microsoft-mlserver-mml-py-9.2.1.x86_64 9.2.1.1360-1 packages-microsoft-com-prod
microsoft-mlserver-mml-r-9.2.1.x86_64 9.2.1.1360-1 packages-microsoft-com-prod
9.2.1.1360-1 packages-microsoft-com-prod
microsoft-mlserver-packages-r-9.2.1.x86_64 9.2.1.1360-1 packages-microsoft-com-prod
microsoft-mlserver-python-9.2.1.x86_64 9.2.1.1360-1 packages-microsoft-com-prod
microsoft-mlserver-webnode-9.2.x86_64 9.2.1-1 packages-microsoft-com-prod
microsoft-r-client-mlm-3.4.1.x86_64 3.4.1.1360-1 packages-microsoft-com-prod
microsoft-r-client-mml-3.4.1.x86_64 3.4.1.1360-1 packages-microsoft-com-prod
microsoft-r-client-packages-3.4.1.x86_64 3.4.1.1360-1 packages-microsoft-com-prod
3.4.1.1347-1 packages-microsoft-com-prod
microsoft-r-open-mkl-3.4.1.x86_64 3.4.1.1347-1 packages-microsoft-com-prod
microsoft-r-open-mro-3.4.1.x86_64 3.4.1.1347-1 packages-microsoft-com-prod
msodbcsql.x86_64 13.1.9.2-1 packages-microsoft-com-prod
mssql-tools.x86_64 14.0.6.0-1 packages-microsoft-com-prod
omi.x86_64 1.4.1-0 packages-microsoft-com-prod
omi-psrp-server.x86_64 1.4.1-28 packages-microsoft-com-prod
packages-microsoft-prod.noarch 1.0-1.el7 packages-microsoft-com-prod
powershell.x86_64 6.0.1-1.rhel.7 packages-microsoft-com-prod
unixODBC-utf16.x86_64 2.3.1-1 packages-microsoft-com-prod
unixODBC-utf16-devel.x86_64 2.3.1-1 packages-microsoft-com-prod
[root@c ~]#
と多彩なパッケージである。
ここでは「mssql-tools」をインストールする
[root@c ~]# yum install mssql-tools
(同時にmsodbcsql,unixODBCが依存関係でインストールされる)
(インストールの最中、ライセンス許諾を求められる)
[root@c ~]# rpm -ql mssql-tools
/opt/mssql-tools/bin
/opt/mssql-tools/bin/bcp
/opt/mssql-tools/bin/sqlcmd
/opt/mssql-tools/share
/opt/mssql-tools/share/resources
/opt/mssql-tools/share/resources/en_US
/opt/mssql-tools/share/resources/en_US/BatchParserGrammar.dfa
/opt/mssql-tools/share/resources/en_US/BatchParserGrammar.llr
/opt/mssql-tools/share/resources/en_US/SQLCMD.rll
/opt/mssql-tools/share/resources/en_US/bcp.rll
/usr/share/doc/mssql-tools
/usr/share/doc/mssql-tools/LICENSE.txt
/usr/share/doc/mssql-tools/THIRDPARTYNOTICES.txt
[root@c ~]#
bcpとsqlcmdの2つだけで戦うようである。
っでsqlcmdを使ってローカルmssqlにアクセスしてみる
[root@c ~]# /opt/mssql-tools/bin/sqlcmd
Microsoft (R) SQL Server Command Line Tool
Version 13.1.0007.0 Linux
Copyright (c) 2012 Microsoft. All rights reserved.
usage: sqlcmd [-U login id] [-P password]
[-S server or Dsn if -D is provided]
[-H hostname] [-E trusted connection]
[-N Encrypt Connection][-C Trust Server Certificate]
[-d use database name] [-l login timeout] [-t query timeout]
[-h headers] [-s colseparator] [-w screen width]
[-a packetsize] [-e echo input] [-I Enable Quoted Identifiers]
[-c cmdend]
[-q "cmdline query"] [-Q "cmdline query" and exit]
[-m errorlevel] [-V severitylevel] [-W remove trailing spaces]
[-u unicode output] [-r[0|1] msgs to stderr]
[-i inputfile] [-o outputfile]
[-k[1|2] remove[replace] control characters]
[-y variable length type display width]
[-Y fixed length type display width]
[-p[1] print statistics[colon format]]
[-R use client regional setting]
[-K application intent]
[-M multisubnet failover]
[-b On error batch abort]
[-D Dsn flag, indicate -S is Dsn]
[-X[1] disable commands, startup script, environment variables [and exit]]
[-x disable variable substitution]
[-? show syntax summary]
[root@c ~]# /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -W
Password:
1> select name,crdate,filename from sysdatabases;
2> go
name crdate filename
---- ------ --------
master 2003-04-08 09:13:36.390 /var/opt/mssql/data/master.mdf
tempdb 2018-01-30 21:00:40.170 /var/opt/mssql/data/tempdb.mdf
model 2003-04-08 09:13:36.390 /var/opt/mssql/data/model.mdf
msdb 2017-12-22 18:36:14.023 /var/opt/mssql/data/MSDBData.mdf
(4 rows affected)
1> quit
[root@c ~]#
この後は「create DATABASE」とかになるのだろうけど、
そこらはwindowsの「SQL Server Management Studio (SSMS)」で行ったほうが楽かな。
AD認証で利用するには下記参照
日本語自動翻訳サイト
https://docs.microsoft.com/ja-jp/sql/linux/sql-server-linux-active-directory-authentication
英語サイト
https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-active-directory-authentication
始めに「Join SQL Server host to AD domain」
ここではmssqlをインストールしたマシンはsambaでActiveDirectoryドメインコントローラの
役目を担っているマシンである。なので、mssqlサーバのドメイン参加は不要
次に「Create AD user for SQL Server and set SPN」
まず、パスワード変更しなくてもいいユーザを作る。資料ではpowershellで作っているがADUCで作った
uid,gidやhome directryの定義もしてない
そしてこのユーザにServicePrincipalNameを与える
[root@c ~]# samba-tool spn add "MSSQLSvc/c.sybyl.local:1433" mssql
[root@c ~]# samba-tool spn list mssql
mssql
User CN=mssql,CN=Users,DC=sybyl,DC=local has the following servicePrincipalName:
MSSQLSvc/c.sybyl.local:1433
[root@c ~]#
「Configure SQL Server service keytab」段階に移って
作ったServicePrincipalNameの「Key Version Number」を確認する
[root@c ~]# kinit
Password for administrator@SYBYL.LOCAL: <<--- administratorのパスワードを入力
[root@c ~]# kvno MSSQLSvc/c.sybyl.local:1433
MSSQLSvc/c.sybyl.local:1433@SYBYL.LOCAL: kvno = 2
[root@c ~]#
そしてmssql向けのkeytabファイルを作る。
[root@c ~]# ktutil
ktutil: addent -password -p MSSQLSvc/c.sybyl.local:1433@SYBYL.LOCAL -k 2 -e aes256-cts-hmac-sha1-96
Password for MSSQLSvc/c.sybyl.local:1433@SYBYL.LOCAL: <<---「mssql」のパスワードを入力
ktutil:
ktutil: addent -password -p MSSQLSvc/c.sybyl.local:1433@SYBYL.LOCAL -k 2 -e rc4-hmac
Password for MSSQLSvc/c.sybyl.local:1433@SYBYL.LOCAL: <<---「mssql」のパスワードを入力
ktutil:
ktutil: write_kt /var/opt/mssql/secrets/mssql.keytab <<--- keytabファイルを書き出す
ktutil: q
[root@c ~]#
[root@c ~]# klist -ke /var/opt/mssql/secrets/mssql.keytab <<--- keytabファイルの中身確認
Keytab name: FILE:/var/opt/mssql/secrets/mssql.keytab
KVNO Principal
---- --------------------------------------------------------------------------
2 MSSQLSvc/c.sybyl.local:1433@SYBYL.LOCAL (aes256-cts-hmac-sha1-96)
2 MSSQLSvc/c.sybyl.local:1433@SYBYL.LOCAL (arcfour-hmac)
[root@c ~]#
[root@c ~]# chown mssql:mssql /var/opt/mssql/secrets/mssql.keytab
[root@c ~]# chmod 400 /var/opt/mssql/secrets/mssql.keytab
chownで「mssql」とあるが、これは「yum install mssql-server」にて作られたユーザ(/etc/passwd)で、
sambaで用意されたユーザではない。
作ったmssql.keytabをsqlserverに読ませる
[root@c ~]# /opt/mssql/bin/mssql-conf set network.kerberoskeytabfile /var/opt/mssql/secrets/mssql.keytab
この設定を適用するには SQL Server を再起動する必要があります。
'systemctl restart mssql-server.service' を実行してください。
[root@c ~]# systemctl restart mssql-server.service
定義はここまで。
次にsqlサーバ側にログインユーザを登録します。ドメインユーザが全員mssqlに既定でログインできるわけはなく、
設定が必要です。ここではユーザillyaをwindows認証ログインできるようにします。
[root@c ~]# /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -W
Password:
1> CREATE LOGIN [SYBYL\illya] FROM WINDOWS;
2> GO
1>
1> SELECT name FROM sys.server_principals;
2> GO
name
----
sa
public
sysadmin
securityadmin
serveradmin
setupadmin
processadmin
diskadmin
dbcreator
bulkadmin
##MS_SQLResourceSigningCertificate##
##MS_SQLReplicationSigningCertificate##
##MS_SQLAuthenticatorCertificate##
##MS_PolicySigningCertificate##
##MS_SmoExtendedSigningCertificate##
##MS_PolicyEventProcessingLogin##
##MS_PolicyTsqlExecutionLogin##
##MS_AgentSigningCertificate##
BUILTIN\Administrators
NT AUTHORITY\NETWORK SERVICE
NT AUTHORITY\SYSTEM
SYBYL\illya
1> quit
[root@c ~]#
これで設定は完了。illyaでログインしたwindowsマシンでssmsを起動して「windows認証」を行えば
パスワード無しでmssqlを扱えます