SQL Server on LinuxをVagrantのCentOS7にインストールする
はじめに
SQL Server on Linux CTP 版を Vagrant の CentOS 7.3 にインストールしてみます。インストール環境は Mac ですが、Windows でも Vagrant は同じように設定できるのではないかと思います。
また、CentOS 7.3 にインストールした SQL Server on Linux に Windows マシンから Microsoft SQL Server Management Studio で接続するまで行います。
但し、Vagrant にいろいろ罠があったり、SQL Server on Linux のドキュメントに間違いがあったりしましたが、ここでは実際に動作した内容を掲載しますので試してみてください。
なお、Vagrant と VirtualBox は既にインストール済みであることとします。またどちらも最新版のインストールをしてください。バージョンに齟齬があると、vagrant ssh で下記のステップで処理が止まります。これは原因の追求が難しいので最初から問題が起きないようにしておいてください。
default: Warning: Remote connection disconnect. Retrying...
default: Warning: Authentication failure. Retrying...
参考までにこの記事では以下のバージョンを利用しています。
- VirtualBox 5.1.18r114002 (Qt5.6.2)
- Vagrant 1.9.2
Vagrant に CentOS 7.3 をインストールし Windows端末からアクセスできるようにする
まずは、Vagrant の初期化からする必要があります。Vagrant 用のフォルダを作成し、Vagrantの設定ファイルである Vagrantfile を作成するところまで進めましょう。
$ cd $ mkdir MyVagrant $ cd MyVagrant $ mkdir centos7x $ cd centos7x $ vagrant init bento/centos-7.3
これで /Users/yourname/MyVagrant/centos7x に Vagrant の CentOS 7.3の設定がされました。ls を実行すると以下のようになるはずです。
$ ls Vagrantfile
ここでいきなりですが、Vagrantfile の編集をしましょう。Vagrantfile を編集すると、vagrant up したときに作成される 仮想マシンに内容が反映されるようになります。
やりたいことは、仮想マシンのネットワーク設定で、LAN にブリッジ接続し外部のマシンからアクセスできるようにすることです。
まずは、private_network のコメントを外して以下のようにします。
config.vm.network "private_network", ip: "192.168.33.10"
そして、public_network もコメントを外して以下のように設定します。
config.vm.network "public_network",ip:"192.168.11.10",bridge:"en0: Wi-Fi (AirPort)"
ここで説明が必要なのですが、ip に設定する IP アドレスは LAN 内で使用可能な IP アドレスにする必要があります。適当なアドレスでは外部からアクセスできません。ここでは、無線LANルーターの IP アドレスが 192.168.11.1 なので、同じネットワークの IP アドレスを設定しました。
また、brige の"en0: Wi-Fi (AirPort)" は Macbook Airなのでこの設定になっています。通常は、以下のコマンドを実行して、LAN に接続に使用したいアダプタ名にしてください。
$ VBoxManage list bridgedifs |grep '^Name:' Name: en0: Wi-Fi (AirPort) Name: en1: Thunderbolt 1 Name: p2p0 Name: awdl0 Name: bridge0
これで外部からネットワーク接続できるようになったはずです。
今度は、SQL Server on Linux のシステム要件としてメモリが 4GB 必要なので以下のように設定します。
config.vm.provider "virtualbox" do |vb| # Display the VirtualBox GUI when booting the machine # vb.gui = true # Customize the amount of memory on the VM: vb.memory = "4096" end
では、以下のコマンドで Vagrant の CentOS 7.3 をインストールし起動します。
$ vagrant up
若干時間がかかりますが、無事に起動したら以下のコマンドで CentOS に ssh ログインしてください。
$ vagrant ssh
ログインできたら OK なので、とりあえず eixt コマンドでログアウトしてください。
次に、ping で IP アドレスが正しく設定されたか確認します。
$ ping 192.168.11.10 PING 192.168.11.10 (192.168.11.10): 56 data bytes 64 bytes from 192.168.11.10: icmp_seq=0 ttl=64 time=0.580 ms 64 bytes from 192.168.11.10: icmp_seq=1 ttl=64 time=0.629 ms 64 bytes from 192.168.11.10: icmp_seq=2 ttl=64 time=0.466 ms
OK ですね。ただこれは、同じパソコン内での結果なので、別マシンのWindowsマシンからも ping で確認してみます。
>ping 192.168.11.10 192.168.11.10 に ping を送信しています 32 バイトのデータ: 192.168.11.10 からの応答: バイト数 =32 時間 =513ms TTL=64 192.168.11.10 からの応答: バイト数 =32 時間 =2ms TTL=64
こちらも問題ありませんね。これで Vagrant と CentOS の設定は終了です。
注意事項としては、SELinux の設定は無効にしないでください。どういう理屈か分かりませんが、SELinux を無効にすると仮想マシンが立ち上がらなくなる現象を回避できませんでした。
この問題ですが設定ミスでした。問題なく SELinux を無効にできます。(2017/04/02)
なお、Vagrant の操作などは以下の記事を参照してください。
SQL Server on Linux を CentOS 7.3 にインストールする
ようやく、SQL Server on Linux のインストールに入ることができます。では、vagrant ssh で仮想マシンにログインしてください。
$ vagrant ssh
これから SQL Server on Linux のインストールを行います。
$ sudo su # curl https://packages.microsoft.com/config/rhel/7/mssql-server.repo > /etc/yum.repos.d/mssql-server.repo $ exit $ sudo yum -y update $ sudo yum -y install mssql-server
これで SQL Server on Linux のインストールが終わったので、今度は設定を行います。といっても、以下のように質問に答えるだけです。
$ sudo /opt/mssql/bin/mssql-conf setup The license terms for this product can be downloaded from http://go.microsoft.com/fwlink/?LinkId=746388 and found in /usr/share/doc/mssql-server/LICENSE.TXT. Do you accept the license terms? [Yes/No]:Yes Setting up Microsoft SQL Server Enter the new SQL Server system administrator password: Confirm the new SQL Server system administrator password: Starting Microsoft SQL Server... Enabling Microsoft SQL Server to run at boot... Created symlink from /etc/systemd/system/multi-user.target.wants/mssql-server.service to /usr/lib/systemd/system/mssql-server.service. Setup completed successfully.
ついでに、sqlcmd Command Line Utility for SQL Server もインストールしてしまいましょう。
$ sudo su # curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/mssql-tools.repo # exit $ sudo ACCEPT_EULA=Y yum -y install mssql-tools $ sudo yum -y install unixODBC-devel $ echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile $ echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc $ source ~/.bashrc
では、SQL Server on Linux のバージョンを調べてみましょう。
$ sqlcmd -S localhost -U sa -P yourpassword -Q "SELECT @@VERSION" Microsoft SQL Server vNext (CTP1.4) - 14.0.405.198 (X64) Mar 11 2017 01:54:12 Copyright (C) 2016 Microsoft Corporation. All rights reserved. on Linux (CentOS Linux 7 (Core))
うまく表示されましたね。
Microsoft SQL Server Management Studio から SQL Server on Linux に接続
では、設定まで済んだ SQL Server on Linux に、Windows マシンの Microsoft SQL Server Management Studio から接続してみましょう。
接続先は CentOS の IP アドレス、SQL Server 認証で、ID は sa , パスワードは先程設定したものになります。
[接続] をクリックすると無事に接続することができました。
接続とデータベースの作成までは Microsoft SQL Server Management Studio 13 でできましたが、テーブルの作成はエラーが出てできませんでした。
ですが、SQL Server on Linux は CTP 版なので Microsoft SQL Server Management Studio も Preview 版があるのではないかと思って調べてみたら、SQL Server Management Studio 17 RC3 が出ていました。
これがビンゴだったようで、テーブルの作成もできますし、日本語データも問題なく扱うことができました。
おわりに
SQL Server on Linux を Vagrant の CentOS 7.3 にインストールし、Microsoft SQL Server Management Studio で接続するまで行いましたがいかがだったでしょうか。
SQL Server on Linux よりも、Vagrant につまづいてしまいました。みなさんはこの記事で罠につまづかないようにしてもらえればと思います。
商用の RDBMS は高価ですが性能や信頼性は高いので、SQL Server on Linux はかなりお安く提供してもらえるととってもうれしいのですが、Microsoft さんその辺どうなのでしょう?期待だけさせておいて、Windows 版とお値段同じじゃ悲しいのですが。
正式版がリリースされ、価格体系も明らかになるときが楽しみな製品ですね。
参考サイト
スポンサーリンク
Twitter ではブログにはない、いろんな情報を発信しています。
@fnyaさんをフォロー
コメント