2017年10月29日

【Linux】Linux Mint にSQL Serverをインストールしてみた




先日、SQL ServerのLinux版が正式にリリースされたということで、試しにLinux Mintにインストールしてみました。



まずは下記のサイトに行きます。

https://www.microsoft.com/ja-jp/sql-server/sql-server-downloads


サイトに行ったら、Linuxのメニューから「Ubuntu Linux 16.04 にインストールする」をクリックします。
Linux Mint 18 は、Ubuntu Linux 16.04 がベースになっていますので、これをクリックします。

クリックするとインストール手順が書かれたページが開きますので、この手順にそってインストールを行ってみます。



まず、パブリックリポジトリ鍵キーをインポートします。
$ curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -

次に、Microsoft SQL Server Ubuntu リポジトリを登録します。
$ sudo add-apt-repository "$(curl https://packages.microsoft.com/config/ubuntu/16.04/mssql-server-2017.list)"

この2つに関してはよく分かりませんが、おそらくGitか何かのリポジトリにアクセスするためのものと思われます。とりあえず書いてあるとおりに実行します。


ここまで出来たら、SQL Serverをインストールします。

つぎのようにコマンドを打ちます。
$ sudo apt-get update
$ sudo apt-get install -y mssql-server


パッケージのインストールが完了したらエディションを選択します。
$ sudo /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): 2
Evaluation、Developer、Expressが無料で使えます。
今回、Developer版を選びました。


次にライセンス条項の同意を求めてきます。
この製品のライセンス条項は
/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]:Y
Yで同意します。


次に言語の設定です。
SQL Server の言語の選択:
(1) English
(2) Deutsch
(3) Español
(4) Français
(5) Italiano
(6) 日本語
(7) 한국어
(8) Português
(9) Русский
(10) 中文 – 简体
(11) 中文 (繁体)
オプション 1-11 を入力: 6
日本語を選択します。


次にsaのパスワードを設定します。
SQL Server システム管理者パスワードを入力してください: 
SQL Server システム管理者パスワードを確認入力してください: 
SQL Server を構成しています...

Created symlink from /etc/systemd/system/multi-user.target.wants/mssql-server.service to /lib/systemd/system/mssql-server.service.
セットアップは正常に完了しました。SQL Server を起動しています。


最後にサービスが実行されていることを確認し、実行されていればとりあえずインストールは完了です。
$ systemctl status mssql-server


次に、コマンドラインツールをインストールしていきます。
これはsqlcmdとbcpを使えるようにするためのものです。

これも手順通りに実行します。

パブリックリポジトリ鍵キーのインポート。
$ curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -

Microsoft Ubuntu リポジトリを登録。
$ sudo add-apt-repository "$(curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list)"

ソースリストを更新し、unixODBC 開発者のパッケージでインストール コマンドを実行。
$ sudo apt-get update
$ sudo apt-get install -y mssql-tools unixodbc-dev

パス環境変数
$ echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
$ echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
$ source ~/.bashrc



では、実際にデータベースを作成して、テーブルを作成し、データを挿入してみたいと思います。


まずは、データベースエンジンに接続。
$ sqlcmd -S localhost -U SA -P 'パスワード'


次に、データベースの作成
1> CREATE DATABASE MYDB
2> GO
1> SELECT Name FROM sys.Databases
2> GO
Name                                                                                                                            
--------------------------------------------------------------------------------------------------------------------------------
master                                                                                                                          
tempdb                                                                                                                          
model                                                                                                                           
msdb                                                                                                                            
TestDB                                                                                                                          
MYDB                                                                                                                            

(6 rows affected)


そして、データベースMYDBを選択し、
1> USE MYDB
2> GO
データベース コンテキストが 'MYDB' に変更されました。


テーブルの作成します。
1> CREATE TABLE T_Mascots ([ID] [int] NOT NULL, [Name] NVARCHAR(50) NULL, [Type] NVARCHAR(50) NULL)
2> GO
1> SELECT Name FROM sys.tables
2> GO
name                                                                                                                            
--------------------------------------------------------------------------------------------------------------------------------
T_Mascots                                                                                                                       

(1 rows affected)


最後にデータを挿入してみます。
1> INSERT INTO T_Mascots VALUES (1, 'あゆコロちゃん', 'ぶた')
2> GO

(1 rows affected)
1> INSERT INTO T_Mascots VALUES (2, 'ぐんまちゃん', 'ポニー')
2> GO

(1 rows affected)
1> INSERT INTO T_Mascots VALUES (3, 'ひこにゃん', '猫')
2> GO

(1 rows affected)


SELECT文でデータを参照してみます。
1> SELECT ID, Name, Type FROM T_Mascots
2> GO
ID          Name                                               Type                                              
----------- -------------------------------------------------- --------------------------------------------------
          1 あゆコロちゃん                                            ぶた                                                
          2 ぐんまちゃん                                             ポニー                                               
          3 ひこにゃん                                              猫                                                 

(3 rows affected)

ちゃんと挿入したデータが表示できました。

まだここまでしか使っていませんが、Windows版とまったく同じ操作でデータベースにアクセス出来るのにはちょっと感動です。まあ、マイクロソフトはそのように作ったと言ってるので、当たり前と言えば当たり前ですが、けっこうすごいことだと思います。

いままで、SQL Serverを使うにはWindowsマシンが必ず必要でしたが、これからはLinuxマシンでもいいということになります。これは別の言い方をすれば、SQL ServerのためにWindowsマシンを用意しなくてもいいということになります。高価なWindows Server OS を用意できないような中小零細企業などにはかなりメリットがあると思えますね。


<関連記事>
Windows10マシンにデュアルブートでインストールしたLinux Mintを削除する方法
Windows10マシンにLinux Mintをインストールしてデュアルブート化してみた。
【Linux】Linux Mint にPowerShellをインストールしてみた。
Linux Mint にSophos Anti-Virus for Linux(Free Edition)を入れてみた
【Linux】viの使い方はとりあえずこれだけ知っていればなんとかなる
【Linux】Linux MintでGRUBのメニューの順番を変える


スポンサーリンク