アクセス・コントロール
アクセス・コントロールは、インストール・ディレクトリのmsql.aclファイルによって管理します。このファイルにおいては、コントロールするデータベースごとに値を設定します。このファイルが存在しない場合、特定のデータベースに値が設定されていない場合、アクセス・コントロールの設定は、グローバルな読み込み/書き込アクセスに戻されてしまいます。ACL設定の例を、次に示します。
mSQLのアクセス・コントロールの例
database=test
read=bambi,paulp
write=root
host=*.Bond.edu.au,-student.it.Bond.edu.au
access=local,remote
この定義を使用すると、データベース'test'には、リモート・マシーンからも、ローカル・マシーンからもアクセスできます。また、student.it.Bond.edu.au以外であれば、Bond.edu.auドメインのいかなるホストからもアクセスできます。読み込みのアクセス権は、bambiとpaulpにのみ与えられています。データベースでSELECTを実行する権利は、誰にも与えられていません。書き込みのアクセス権は、ルート・ディレクトリのユーザーにのみ与えられます。
指定した値の順番に、コントロールが設定されます。したがって、bambi以外のユーザーに読み込みアクセスを認めたくない場合、"read=-*,bambi"では意図している設定にできません。-*は、bambiも含んでいるからです。正しく設定したい場合、この行に"read=bambi,-*"と指定する必要があります。ただし、-*を指定しなくても、設定結果は同じになるため、実際には指定する必要はありません。
特定の設定行(readなど)に値を何も指定しない場合、注意する必要があります。全ユーザーのアクセスが拒否されてしまうからです。たとえば、"read"行がない(すなわち、コントロール・ファイルをロードしたところ、readの指定が見つからなかった)場合、全ユーザーの読み込みアクセスが拒否されます。これとは反対に、コントロール・ファイル自体が無い場合、全ユーザーにアクセス権が与えられます。
もう1つ注意すべき重要な点があります。データベースのコントロール指定の後に、設定の終わりを示す空白行を挿入することです。また1つの指定を、複数行に分けることもできます。たとえば、"read=bambi,paulp""read=root"という指定は有効とされます。このように指定したとしても、実際にロードする時点では、"read=bambi,paulp,root"というように1行としてロードされます。
どの指定であっても、ワイルドカードを使うことができます。ワイルドカードは、いかなる文字にも当てはまります。ワイルドカードの後に文字をつけ加えると、部分的なワイルドカードの指定ができます。(たとえば、*.Bond.edu.auの場合、Bond.edu.auで終わる文字列はすべて当てはまります。) また、データベース名のために、ワイルドカードを設定することもできます。コントロール・ファイルの最後にdatabase=*を指定するといいでしょう。このように指定しておけば、アクセスしているデータベースに独自の指定がなかった場合でも、デフォルトの指定が適用されるからです。
"msqladmin reload"を使用すると、実行時にACL情報を再ロードすることができます。エンジンにreloadコマンドを送信しようとすると、このACL情報ファイルがチェックされます。チェックで問題が見つからなかった場合、このファイルは再ロードされます。ほとんどのmsqladminコマンドと同様に、ローカル・ホストにおいて、ルート・ディレクトリのユーザー(あるいはデータベースのインストール時に設定した他のユーザー)が実行した場合にのみ、このコマンドは受け入れられます。