mSQL(Mini SQL)のインストールと設定

mSQL(Mini SQL)は,Hughes Technologies 社が開発している軽量のリレーショナルデータベース管理システムである. 1994 年に最初のバージョンが公開され, 最新バージョンは 4.4(2021 年 10 月公開)である. このページでは,FreeBSD 上にソースコードからインストールする手順をまとめる.

mSQL はフリーソフトウェアではない. 非商用の利用は無償で認められているが,商用環境で使用する場合には Hughes Technologies 社から商用ライセンスを購入する必要がある. 大学,学校,登録された慈善団体などには無償ライセンスが提供される.

関連する外部ページHughes Technologies 社 mSQL のページmSQL 4 マニュアル (PDF)

配布物の入手

FreeBSD の ports コレクションには,かつて databases/msql(バージョン 2 系)と databases/msql3(バージョン 3 系)が存在したが, 2014 年に ports から削除されたため, 現在は pkg や ports からインストールできない. Hughes Technologies 社の Web ページからソースコードを入手してビルドする.

cd /var/tmp
fetch https://hughestech.com.au/downloads/msql/msql-4.4.tar.gz

インストール

設定(msql.conf)

mSQL は,実行時の設定を msql.conf から読み込む. このファイルはインストールディレクトリ(既定では /opt/msql)に置かれる. 各コマンドは -f 設定ファイル名 オプションにより,別の設定ファイルを指定できる.

設定ファイルはプレーンテキストであり, 「[general]」「[system]」のようなセクション見出しと, 「パラメタ名 = 値」の行からなる. 「#」で始まる行はコメントである. 値の中の %I は,インストールディレクトリ(Inst_Dir の値)に展開される. 設定されなかったパラメタには,内部の既定値が使われる.

[general] セクションの主なパラメタは次の通りである.

[system] セクションの主なパラメタは次の通りである.

以下は設定である.

[general]
Inst_Dir = /opt/msql
mSQL_User = msql
Admin_User = root
Pid_File = %I/msqld.pid
TCP_Port = 1114
UNIX_Port = %I/msqld.sock

[system]
Host_Lookup = True
Read_Only = False
Local_Access = True
Remote_Access = False
Query_Log = False
Update_Log = False

mSQL_User に指定するユーザは,サーバを動作させるためのサービス用アカウントである. ログインする必要はないため,ログインシェルを無効にして作成する.

pw useradd msql -d /nonexistent -s /usr/sbin/nologin

接続方法とアクセス制御

mSQL サーバへの接続には,UNIX ドメインソケットによる接続TCP ソケットによる接続の 2 通りがある. UNIX ドメインソケットによる接続は,その性質上,同一マシン上からのみ可能である. TCP ソケットによる接続は,ネットワーク上のどのマシンからでも可能である.

接続の可否は,msql.conf の Local_Access と Remote_Access で設定する. Local_Access の既定値は True,Remote_Access の既定値は False であり, 既定の設定では,同一マシン上からの接続だけが可能である.

Remote_Access = True に設定すると,TCP ポート 1114 が外部に開かれる. mSQL には接続ごとのパスワード認証の仕組みがないため, このポートに到達できるホストを,ipfw などのパケットフィルタで 必要な範囲に限定する.

同一マシン上のサーバに接続する場合でも,UNIX ドメインソケットではなく TCP ソケットを使うクライアントソフトウェアがある. その場合には,Local_Access だけでなく Remote_Access も True にする必要がある.

起動と停止

デバッグ

環境変数 MSQL_DEBUG を設定すると,デバッグ情報が出力される. 指定できるモジュールは次の 3 つである.

query  : サーバへ送られる問い合わせの内容を出力する
api    : 接続の詳細など,API ライブラリ内部の情報を出力する
malloc : API ライブラリが確保したメモリの位置とサイズ,free() に渡されたアドレスを出力する

sh の場合の設定方法は次の通りである.

MSQL_DEBUG=query
export MSQL_DEBUG

複数のモジュールを指定する場合には,コロンで区切る.

MSQL_DEBUG=query:api
export MSQL_DEBUG

ツール

以下,ツールの説明である.オプションは,頻繁に使われるものだけを記載している. -h でサーバのホスト名を指定する.省略した場合は,同一マシン上のサーバに接続する.