第3章 MySQL プログラムの使用

目次

3.1. MySQL プログラム の概要
3.2. MySQL プログラムの起動
3.3. プログラム・オプションの指定
3.3.1. コマンドラインにおけるオプションの使用
3.3.2. オプションファイルの使用
3.3.3. オプション指定のための環境変数の使用
3.3.4. プログラム変数セットのためのオプション使用

ここでは MySQL AB におけるコマンドラインの概要と、プログラムを起動させたときの具体的なオプション基本構造についての解説が述べられています。大半のプログラムにはそれぞれに呼応した特定のオペレーション システムが必要となりますが、オプション構造は全てにおいて似通っています。後半では個々のプログラムについて、どのオプションがサポートされるかという内容も含めたより詳しい解説がなされます。

MySQL AB はまた、3つの GUI のクライアントプログラムを MySQL サーバとして使用しています。

これらの GUI プログラムそれぞれには個々のマニュアルがあり、http://dev.mysql.com/doc/ からアクセスすることができます。

3.1. MySQL プログラム の概要

MySQL AB は様々な種類のプログラムを提供しています。

  • MySQL サーバとその起動スクリプト:

    • mysqld が MySQL サーバです。

    • mysqld_safe, mysql.servermysqld_multi はサーバ起動スクリプトです。

    • mysql_install_dbによってデータディレクトリと初期データベースが初期化されます。

    • MySQL インスタンス・マネージャーが MySQL サーバのインスタンスを表示、そして管理します。

    章?4. データベース管理ではこれらのプログラムについてより詳しい解説がなされています。

  • サーバにアクセスしているクライアントプログラム:

    • mysql は SQL ステートメントをインタラクティブに、また一括モードで実行するためのコマンドラインクライアント。

    • mysqladmin は管理におけるクライアント。

    • mysqlcheck はテーブルメンテナンスオペレーションを行います。

    • mysqldumpmysqlhotcopy はデータベースのバックアップを行います。

    • mysqlimport はデータファイルをインポートします。

    • mysqlshow はデータベースとテーブルについての情報を表示します。

    章?7. クライアントプログラムとユーティリティ プログラムではこれらのプログラムについてより詳しい解説がなされています。

  • サーバとは独立して作動するユーティリティプログラム:

    • myisamchk はテーブルメンテナンスオペレーションを行います。

    • myisampack はテーブルを圧縮し、リードオンリーにします。

    • mysqlbinlog はバイナリログファイルを処理するためのツールです。

    • perror はエラーコードの意味を表示します。

    章?7. クライアントプログラムとユーティリティ プログラムではこれらのプログラムについてより詳しい解説がなされています。

MySQL ディストリビューションの殆どがこれらのプログラム全てを含んでいますが、プラットフォームに特有のプログラムはこれに含まれません。(例:サーバ起動スクリプトは Windows では使用されません)例外として RPM ディストリビューションはより明細かされています。サーバ用の RPM がひとつ、そしてそれとはまた別にクライアントプログラムのためのものがある、といった具合になっています。もしこのプログラムのうちのいくつかが欠けているようであれば、章?2. MySQL のインストールと更新を参照して、ディストリビューションのタイプとその内容を確認してください。全プログラムを含まないディストリビューションである可能性があり、その際には別のものをインストールする必要があります。

3.2. MySQL プログラムの起動

MySQL プログラムをコマンド ライン(シェル、またはコマンド プロンプトから)から呼び出すには、そのプログラムに実行したい内容を命令するためのオプション、または引数を含むプログラム名を入力します。下に表示されているコマンドはプログラム実施のサンプルです。ここでの 「shell>」 はコマンドインタープリタへのプロンプトを表していて、ユーザによって入力されたものではありません。このプロンプトは使用されるコマンドインタープリタによって異なります。多く見られるものとしては、sh または bashとして $csh または tcsh として %、そして Windows の command.com または cmd.exe コマンドインタープリタとしてC:\> が挙げられます。

shell> mysql -u root test
shell> mysqladmin extended-status variables
shell> mysqlshow --help
shell> mysqldump --user=root personnel

シングル、またはダブルダッシュ (‘-’、‘--’) で始まる引数はオプション引数です。これらは一般的にプログラムがサーバに対してとるべき接続タイプを特定するか、その作動モードに影響を与えます。オプション構文については 項3.3. 「プログラム・オプションの指定」 で述べられています。

ノンオプション引数(ダッシュを伴わない引数)はプログラムに追加の情報を提供します。例えば mysql は最初のノンオプション引数をデータベース名に変換し、これによってコマンド mysql -u root test が test データベースの使用が要求されていることを指示します。

個々のプログラムについてより詳しい解説がなされている後半のセクションでは、どのオプションがプログラムによって認知されるかが明らかにされ、そして追加のノンオプション引数についても説明がされています。

オプションのうちのいくつかは多くのプログラムに共通しているものです。そのうちの最も多くは、 --host (または -h)、--user (または -u)、そして --password (または -p) オプションで、コネクションパラメータを特定します。これらは MySQL サーバが作動しているホスト、そして MySQL アカウントのユーザネームとパスワードを表示します。これらのオプションは全ての MySQL クライアント・プログラムによって認知されます。これによって初めて、どのサーバに接続するか、そしてサーバの使用に必要なアカウントが特定されます。

その他の接続オプションとしては、TCP/IP ポート番号を特定する --port (または -P)、そして Unix 上(Windows ではパイプ名と呼ばれる)で Unix ソケットファイルを特定する --socket (または -S) があります。

初期設定時のホスト名は localhost です。Unix 上でのクライアントプログラムには、このホストネーム localhost は特別な意味を持っています。これによってクライアントがUnixソケットファイルを通し MySQL サーバに接続することができるようになります。これはまた、--port もしくは -P オプションがポート番号を特定するために与えられたとしても実行されます。クライアントによって TCP/IP 接続をローカルサーバに確実に行わせるためには、ホスト名、もしくは IP アドレス、ローカルサーバ名のいずれかを 127.0.0.1 に指定するために --host または -h を使用します。--protocol=tcp オプションを使用することによって、localhost に対してもまた、プロトコル接続をさらに明確に指定することができます。

プログラムがインストールされている bin ディレクトリへのパスネームを使って MySQL を起動させることが必要とされることもあります。この場合は、bin ディレクトリ以外の辞書を使用して MySQL の起動を試み、「program not found」 というエラーが表示された可能性があります。MySQL をさらに実用的に使用できるように bin ディレクトリへのパスネームを PATH 環境変数セッティングに加えることも可能です。こうすることによってプログラムを、パスネームではなくプログラム名を入力するだけで実行することが出来るようになります。例えば /usr/local/mysql/binmysqlがインストールされている場合、mysqlとしてプログラムを実行することが可能で、/usr/local/mysql/bin/mysql として呼び出す必要はありません。

PATHを変数にセッティングするの際の手順におけるコマンドインタープリタについては、使用説明を参照してください。環境変数セッティングの構文は各インタープリタごとに特有となっています。(これに関する説明は 項3.3.3. 「オプション指定のための環境変数の使用」で述べられています)

3.3. プログラム・オプションの指定

MySQL プログラムのオプションを指定するには次の手段があります。

  • プログラム名に続くコマンドラインにオプションをリストアップします。これはプログラムを特別な形で立ち上げる際のオプションの中として最も代表的なものです。

  • オプションをプログラム起動時に読み込まれるオプション ファイルの中にリストアップします。これはプログラム起動の度、自動的に読み込まれるように設定する際に有効です。

  • オプションを環境変数にリストアップします。この方法はプログラム起動の際、その都度設定する場合に便利なオプションです。実際には、オプションファイルの使用理由の多くがこれに当てはまります。しかし、項4.12.2. 「Unix で複数サーバの実行」 では、環境変数が大変役立つ一例が取り上げられています。ここでは TCP/IP ポート番号と Unix ソケット ファイルをサーバとクライアント プログラム両用に指定するために便利な手法が述べられています。

MySQL はどのオプションが最初に与えられたかを環境変数内の調査、そしてオプションファイルの読み取り、コマンドラインのチェックといった作業を通して判断します。これはつまり、環境変数は優位性が最も低く、コマンドラインのオプションは優位性が最も高いということを意味しています。

オプションは規則正しく処理されるため、特定のオプションが複数回指定されると、最後のものが最優先されるようになっています。ここで取り上げる次のコマンドは、localhost 上のサーバに接続するための mysqlを立ち上げます。

shell> mysql -h example.com -h localhost

相反する、または関連するオプションが与えられた場合、後で与えられたオプションが前のものよりも優先されます。次のコマンドは mysql を 「列名なし」 モードで立ち上げます。

shell> mysql --column-names --skip-column-names

オプションの指定は、完全な形、または不明瞭な点なく頭部が入力されることで行われます。例えば、--compressオプションはmysqldump--comprとして与えられた場合は読み取られますが、不明瞭な形の--compとして与えられた場合は作動しません。

shell> mysqldump --comp
mysqldump: ambiguous option '--comp' (compatible, compress)

オプション頭部の入力次第では、プログラムに新たなオプションが実行される手順で問題が生じることもあるという点に注意してください。現在は問題のなくても今後不明瞭とされることも考えられます。

MySQL はオプションファイル内でプログラムのオプションに初期設定値を指定することでオプションを処理していきます。従って、これを利用すれば、プログラムを立ち上げる際毎回手動で入力しなくてもよいだけでなく、必要に応じてはコマンドラインのオプションを使うことで初期設定を塗り替えることもできます。

3.3.1. コマンドラインにおけるオプションの使用

コマンドラインにおけるプログラムのオプションは次の法則に従って作動します。

  • オプションはコマンド名の後に置かれます。

  • オプション引数はその名前が短いか長いかに応じて、シングル、またはダブルダッシュで始まります。オプションの多くがこの両方を持ち合わせています。例えば、-?--helpは MySQL でヘルプメッセージの表示を行うオプションのそれぞれのフォームにあたります。

  • オプション名は時にとてもデリケートなものでもあります。-v-Vはどちらも正しく、それぞれ異なる意味を持っています。(-vは--verboseの、-Vは--versionの短縮形としての意味で使われます。)

  • オプションの中にはオプション名に続く値をとるものもあります。例えば、-h localhostまたは--host=localhostは MySQL がクライアントプログラムをホストしていることを示します。オプションの値はプログラムに MySQL が起動しているホストの名前を示します。

  • 値を持つ長いオプションにおいては、オプション名と値を‘=’印に従って切り離します。値を持つ短いオプションでのその値はオプション名の直後に続いているか、またはスペースが空いていますが、-hlocalhost-h localhostは同等の意味を持っています。ここでの例外は、MySQL パスワードを指定するオプションの法則です。このオプションは --password=pass_val という長い形でか、--password という短い形で与えられます。後者の場合(パスワード値が与えられていない状態で)には、プログラムによってパスワードを入力するようにとのプロンプトが表示されます。パスワードオプションはまた、-ppass_val、もしくは-pという短い形で入力することも可能です。しかしこの場合、もし値が付属していれば間にスペースを入れずオプションの直後に値が来るようにしなければいけません。その理由は、もしオプションの後にスペースが入れば、プログラムはこれに続く引数がパスワード値なのか、または何か別の引数なのかを特定することができなくなくなるからです。従って、ここで例に挙げるふたつのコマンドはそれぞれが全く異なった意味を持っています。

    shell> mysql -ptest
    shell> mysql -p test
    

    初めのコマンドはtestのパスワード値を使用するためのmysqlを指示しますが、初期設定データベースの特定は行いません。これとは異なり、もう一方はmysqlプロンプトでパスワード値を求めるように指示し、さらにtestを初期設定データベースとして使用します。

オプションのうちの数種はオン、またはオフの切り替えをコントロールします。例えば、mysqlクライアントは、クエリから得られる結果の冒頭にカラム名の行を表示するか否かを決定するオプション--column-namesをサポートします。この作業は初期設定において可能です。けれども、データだけを読み取り初期ヘッダーラインを読み取らないようなプログラムにmysqlが出力された場合などは、この機能を無効にすることも可能です。

列名を無効にするには次のオプションのうちのいずれかを指定します。

--disable-column-names
--skip-column-names
--column-names=0

--disable--skipの頭部と末尾=0は全て同じ働きをします。つまり、オプションをオフに切り替えます。

オプションを「enabled」に切り替えるためには、次のうちのいずれかを指定する必要があります。

--column-names
--enable-column-names
--column-names=1

もし頭部が--looseのオプションがあれば、もしプログラムがオプションを認知できない場合でもエラーで終了せず、ただ警告を発します。

shell> mysql --loose-no-such-option
mysql: WARNING: unknown option '--no-such-option'

この --loose はMySQLを同じコンピュータ上に複数回インストールした状態でプログラムを立ち上げ、オプションファイルにオプションをリストアップする時に役立ちます。 全てのバージョンには認知されないようなオプションでも --loose またはオプションファイル内では loose を入力することによって使用可能になります。オプションを認知できるバージョンでは通常通りに処理され、そうでないバージョンでは警告が表示され、そして無視されます。

その他のオプションの中で場合によってはmysqlとともに便利に働くのが--execute、または-eで、SQLステートメントをサーバに送り届けます。ステートメントはシングル、またはダブルの引用符で囲まれている必要があります。もしこの引用符内の値を使用したい場合には、ステートメントにダブルの引用符を使用し、シングルの引用符をステートメント内の値のうちのいづれかに使用します。このオプションが使用される際には、mysqlがステートメントを実行し、その後終了します。

ここで例として、次のコマンドをユーザアカウントのリスト取得のために使うことにしましょう。

shell> mysql -u root -p --execute="SELECT User, Host FROM user" mysql
Enter password: ******
+------+-----------+
| User | Host      |
+------+-----------+
|      | gigan     |
| root | gigan     |
|      | localhost |
| jon  | localhost |
| root | localhost |
+------+-----------+
shell>

長い形のタイプ(--execute)の後ろにはイコール(=)が続いている事を確認します。

上記の例ではmysqlデータベースの名前は個別の引数として認められています。しかし、同じステートメントを初期設定データベースをしていしないコマンドを使用して実行することも可能です。

mysql> mysql -u root -p --execute="SELECT User, Host FROM mysql.user"

複数のSQLステートメントはセミコロンによって切り離され、コマンドライン上に認められることもあります。

shell> mysql -u root -p -e "SELECT VERSION();SELECT NOW()"
Enter password: ******
+-----------------+
| VERSION()       |
+-----------------+
| 5.1.5-alpha-log |
+-----------------+
+---------------------+
| NOW()               |
+---------------------+
| 2006-01-05 21:19:04 |
+---------------------+

オプション--execute、または-eは、アナログ形式のコマンドをMySQLクラスターへのndb_mgm管理クライアントへと届けるために使用されることもあります。例については 項14.3.6. 「安全なシャットダウンと再起動」を参照してください。

3.3.2. オプションファイルの使用

MySQLプログラムの多くは、スタートアップのオプションをオプションファイル(時にコンフィグレーションファイルとも呼ばれる)から解読することができます。オプションファイルはよく使用されるオプションを指定するのに便利で、これによって毎回プログラムを起動させるたびにコマンドラインにおける作業を省略することができます。MySQLサーバにはMySQLによって多大なpreconfigured option filesが提供されます。

プログラムがオプションファイルを解読しているかを確認するには、--helpmysqldには--verbose--help)を使用してプログラムを起動します。プログラムがオプションファイルを解読している場合には、ヘルプメッセージによって解読中のファイルとどのオプショングループを認識中かが表示されます。

注記 :MySQL クラスタープログラムを伴うオプションファイルについては 項14.4. 「MySQL Cluster の設定」で述べられています。

Windowsにおいて、MySQLプログラムは次のファイルからスタートアップオプションを解読します。

ファイル名目的
WINDIR\my.iniグローバルオプション
C:\my.cnfグローバルオプション
INSTALLDIR\my.iniグローバルオプション
defaults-extra-file--defaults-extra-file=pathで指定されたファイル(あれば)

WINDIR ユーザのWindowsディレクトリの場所を表しています。一般的に、C:\WINDOWS もしくは C:\WINNTになります。以下のコマンドを使用して WINDIR 環境変数の値から正確なロケーションを割り出すことができます。

C:\> echo %WINDIR%

INSTALLDIR はMySQLのインストールディレクトリを表します。これは主に、C:\PROGRAMDIR\MySQL\MySQL 5.1 Server です。MySQL 5.1がインストールとコンフィギュレーションウィザードを使用してインストールされた場合、PROGRAMDIR がプログラムディレクトリ(通常は英語バージョンWindows上の Program Files を表します。 詳細は 項2.3.4.14. 「my.ini ファイルのロケーション」 を参照してください。

Unixにおいて、MySQLプログラムは次のファイルからスタートアップオプションを解読します。

ファイル名目的
/etc/my.cnfグローバルオプション
$MYSQL_HOME/my.cnfサーバ固有のオプション
defaults-extra-file--defaults-extra-file=pathで指定されたファイル(あれば)
~/.my.cnfユーザ固有のオプション

MYSQL_HOMEはサーバ固有のファイルmy.cnfを含むディレクトリへのパスを含む環境変数です。

MYSQL_HOME がセットされていない状態で mysqld_safe プログラムを使ってサーバをスタートさせると、 mysqld_safe は次のように MYSQL_HOME をセットしようとします。

  • BASEDIRDATADIR をそれぞれ、MySQLベースディレクトリとデータディレクトリのパスネームの代理に立てます。

  • DATADIRにはmy.cnfファイルが存在し、BASEDIRには存在しない場合、mysqld_safeMYSQL_HOMEDATADIRにセットします。

  • または、もしMYSQL_HOMEがセットされておらず、my.cnfファイルがDATADIRに存在しない場合、mysqld_safeBASEDIRMYSQL_HOMEをセットします。

MySQL 5.1ではDATADIRmy.cnfファイルのロケーションとしての使用は認証されていません。BASEDIR の方が良い場所です。

一般的にDATADIR/usr/local/mysql/dataでバイナリインストールに、または/usr/local/varでソースインストールに使用されます。これはコンフィグレーションタイムに特定されたデータディレクトリロケーションであって、mysqldが起動したときの--datadirオプションに呼応しているのではないということに注意してください。--datadirの起動時の使用はサーバがオプションファイルを探す際に何の影響ももたらしません。 これはサーバがオプションを処理する前にオプションファイルを探すからです。

MySQLは指示された通りの順序でオプションファイルを探し、その中で存在するものを解読します。もし使用したいオプションファイルが存在しなければ、プレーンテキストエディタで新しく作ってください。

与えられたオプションに対して複数のインスタンスが挙がった場合には、最後のものが優先されます。ここでの唯一の例外は:mysqldに対して、--userオプションの最初のインスタンスがセキュリティー上用心のため使用され、オプションファイルのユーザ固有タイプがコマンドラインで優先されるのを防ぎます。

注記 :Unixのプラットフォームでは、MySQLは全世界から書き込み・書き取り可能なコンフィグレーションファイルを認知しません。これは故意に行われており、セキュリティー対策です。

MySQL起動時にコマンドラインにおいて与えられるロングオプションは、その全てがオプションファイルにも送られる可能性があります。プログラムに対して使用可能な存在するオプションのリストを入手するには、--helpオプションを使用してプログラムを起動してください。

オプションファイルへとオプションを特定するための構文はコマンドラインの構文と似通っており、異なる点は頭のダブルダッシュを省略するというところだけです。例えば、コマンドラインにおける--quickまたは--host=localhostは、quickまたはhost=localhostとしてオプションファイル内に指定されます。--loose-opt_nameという形のオプションをオプションファイルに指定するには、loose-opt_nameという形で入力します。

オプションファイルでは空白のラインは認識されません。空白でないラインは次のいづれかの形を取ります。

  • #comment, ;comment

    コメントラインは ‘#’ または ‘;’で始まります。‘#’ コメントはラインの真ん中からスタートすることもできます。

  • [group]

    groupとはプログラムの名前、またはオプションをセットしたいグループを示します。グループラインの後には、オプションファイル、あるいは別のグループラインの端が与えられるまで、オプションをセットするラインは全て指定されたグループに当てはまります。

  • opt_name

    これはコマンドラインの--opt_nameと同じです。

  • opt_name=value

    これはコマンドラインの--opt_name=valueと同じです。オプションファイルでは‘=’の周囲にスペースをおくこともできますが、これはコマンドラインでは適切な操作ではありません。シングル、またはダブルの引用符で閉じることができ、これはコメントラインが‘#’、またはスペースを含んでいる場合に有効です。

数値の値をとる変数については、値は、1024、10242乗または10243乗、それぞれの乗数を示すために、KMあるいはG(大文字か小文字のいずれか)の接尾辞で与えることができます。例えば次のコマンドはmysqladminへサーバに1024回pingを打つように、そして各pingの間それぞれ10秒ずつ間を空けるようにと命令します。

mysql> mysqladmin --count=1K --sleep=10 ping

ブランクのリードと追跡はオプション名とその値から自動的に削除されます。バックスペース、タブ、復帰改行、キャリッジリターン、バックスラッシュおよびスペース文字を表わすために、オプション値の中でエスケープシーケンス‘\b’、‘\t’、‘\n’、‘\r’、‘\\’、および ‘\s’を使用することもできます。

\\’ エスケープシーケンスが単一のバックスラッシュを表わすので、‘\\’として各‘\’を書かなければなりません。選択肢としては、パスネームセパレータとして‘\’ではなく‘/’を使用して、値を指定することができます。

オプショングループ名がプログラム名と同じである場合、グループ中のオプションは特定のそのプログラムに当てはまります。例えば、[mysqld]および[mysql]グループは、mysqldサーバおよびmysqlクライアントプログラムにそれぞれ当てはまります。

[client]オプショングループは、すべてのクライアントプログラム(mysqld除く)によって解読されます。これによって全てのクライアントに当てはまるオプションを指定することが可能になります。例えば、[client]は、サーバに接続するために使用するパスワードを指定するために使用する完全なグループです(しかしオプションファイルはユーザ当事者にのみ判読可能、書き込み可能であることに注意してください。 これによって、他のユーザはこのパスワードを見つけ出すことができなくなります)。使用する全てのクライアントプログラムに認識されない限り、[client]グループにオプションを入れないようにしてください。オプションを解読しないプログラムは、オプションを実行しようとすればエラーメッセージを表示した後に中断されます。

次に示されているのは典型的なグローバルオプションファイルです。

[client]
port=3306
socket=/tmp/mysql.sock

[mysqld]
port=3306
socket=/tmp/mysql.sock
key_buffer_size=16M
max_allowed_packet=8M

[mysqldump]
quick

上のオプションファイルは、key_buffer_sizemax_allowed_packetの変数をセットするラインのためにvar_name=value構文を使用します。

ここに典型的なユーザオプションファイルがあります。

[client]
# The following password will be sent to all standard MySQL clients
password="my_password"

[mysql]
no-auto-rehash
connect_timeout=2

[mysqlhotcopy]
interactive-timeout

特定のMySQLリリースシリーズのmysqldサーバのみによって解読されるオプショングループを作りたければ、[mysqld-5.0][mysqld-5.1]などの名前を備えたグループの使用により可能になります。次のグループは次のことを示します--newオプションは5.1.xバージョン番号を持ったMySQLサーバによってのみ使用される必要があります。

[mysqld-5.1]
new

MySQL 5.0.4から始め、オプションファイルを求めて特定のディレクトリを探索する他のオプションファイル、および!includedirを含むようにオプションファイルの中で!include指令を使用することができます。例えば、/home/mydir/myopt.cnfファイルを含むためには次の指令を使用することができます。

!include /home/me/myopt.cnf

/home/mydirディレクトリを探し出し、見つかったオプションファイルを解読するためにはこの指令を使います。

!includedir /home/mydir

注記 :一般的に、Unixオペレーティングシステム上で見つけることができ、!includedir指令の使用が含まれているファイルの全てが、.cnfで終わるファイル名を持っていなければいけません。Windowsにおいては、この指令が.ini.cnf拡張を備えたファイルをチェックします。

付属のファイルから解読されたオプションは、一般的なオプショングループのコンテキストに適用されることに注意してください。my.cnfに次のラインを書かなければならないと仮定してください。

[mysqld]
!include /home/mydir/myopt.cnf

この場合、myopt.cnfファイルはサーバ用にのみ処理されます。 また、!include指令は全てのクライアントアプリケーションによって無視されます。しかし、次のラインを使用したならば、ディレクトリ/home/mydir/my-dump-optionsは、サーバによって、あるいは他のクライアントアプリケーションによってではなく、mysqldumpのみによってオプションファイルのチェックが行われます。

[mysqldump]
!includedir /home/mydir/my-dump-options

ソース分配を持っていれば、support-filesディレクトリ中にmy-xxxx.cnfという名前のサンプルオプションファイルが見つかります。バイナリ分配の場合は、MySQLインストールディレクトリの下でsupport-filesディレクトリの中を見てください。Windowsにおいては、サンプルオプションファイルはMySQLインストールディレクトリに置かれていることがあります(この章の前半、どこのことか分からない場合には章?2. MySQL のインストールと更新を参照してください)。一般的に、小さな、ミディアム、大きな、また大規模システムのためのサンプルオプションファイルがあります。これらのファイルのうちのひとつで実験するには、Windows上でC:\my.cnfに、あるいはUnix上のホームディレクトリ中にある.my.cnfにコピーしてください。

注記 :Windowsにおいては、.cnf.iniオプションファイル拡張が表示されない可能性があります。

オプションファイルをサポートするMySQLプログラムは全て、次のオプションを扱い、オプションファイル取り扱いに影響します。したがって、これらはオプションファイル中でではなくコマンドライン上で与えられる必要があります。適切な動作のためには、これらのオプションの各々は速やかにコマンド名に続かなければなりません。 ここでの例外として、--print-defaults--defaults-fileまたは--defaults-extra-file直後に使用することができます。また、望み通りに解釈されないかもしれないので、ファイル名を指定する場合‘~’シェルメタ文字の使用は回避するべきです。

  • --no-defaults

    どんなオプション・ファイルも読まないでください。

  • --print-defaults

    オプションファイルから得るプログラム名、および全てのオプションを印刷してください。

  • --defaults-file=file_name

    与えられたオプションファイルだけを使用してください。file_nameはファイルへのフルパスネームです。ファイルが存在しないかアクセス不能な場合、プログラムはエラーメッセージとともに終了します。

  • --defaults-extra-file=file_name

    グローバルなオプションファイルの後に、しかし(Unix上では)ユーザオプションファイルの前にこのオプションファイルを読んでください。file_nameはファイルへのフルパスネームです。ファイルが存在しないかアクセス不能な場合、プログラムはエラーメッセージとともに終了します。

  • --defaults-group-suffix=str

    このオプションが与えられる場合、プログラムは通常のオプショングループだけでなく通常の名前、およびstrの接尾辞を備えたグループも解読します。例えば、mysqlクライアントは通常[client]および[mysql]グループを解読します。--default-group-suffix=_otherオプションが与えられた場合には、mysqlはさらに[client_other]および[mysql_other]グループも解読します。

シェルスクリプトでは、オプションファイルを解析するmy_print_defaultsプログラムを使用し、オプションが与えられたプログラムによって何に使用されるか確かめることができます。次の例は、[client]および[mysql]グループで見つかったオプションを表示するように依頼された時、my_print_defaultsによって生産される可能性のある出力を示しています。

shell> my_print_defaults client mysql
--port=3306
--socket=/tmp/mysql.sock
--no-auto-rehash

開発者への注意:オプションファイル取り扱いは、単純に適切なグループ中で、または任意のコマンドライン引数の前でオプションを全て処理することにより、Cクライアントライブラリで実行されます。複数回指定されるオプションの最後のインスタンスを使用するプログラムにとって、これは有効な方法です。複数回指定されるオプションをこの方法で扱うが、オプションファイルを解読しないCまたはC++のプログラムを持っている場合、この機能を使えるようにするためにはたった2行のラインを加えればよいだけです。この方法を確認するには、スタンダードMySQLクライアントのうちのいずれかのソースコードをチェックしてください。

MySQLへの他の言語インターフェースのうちのいくつかはCクライアントライブラリに基づいています。 またその中には、オプションファイルのコンテンツへアクセス方法が提供されているものもあります。これらはPerlとPythonを含んでいます。詳細については、手持ちのインターフェースにとって好ましい使用説明を参照してください。

3.3.2.1. あらかじめ形成されたオプション・ファイル

MySQLは、MySQLサーバを調整する際にベースとして使用することができる、あらかじめ形成されたオプションファイルを数多く提供します。基礎構成ファイルとしての使用のための適切な位置へリネームしコピーすることのできるmy-small.cnfmy-medium.cnfmy-huge.cnf、およびmy-huge.cnfといったファイル用のインストールディレクトリの中を見てください。名前、そして適切な位置に関しては項3.3.2. 「オプションファイルの使用」の一般的な情報を参照してください。Windowsにおいてこれらのファイルは、.cnfよりも.ini拡張を持っている確立が高いです。

3.3.3. オプション指定のための環境変数の使用

環境変数を使用してオプションを指定するためには、コマンド処理プログラムに適切な構文を使用し、変数をセットしてください。例えば、WindowsまたはNetWareにおいては、USER変数にMySQLアカウント名を指定させることができます。そのためには、次の構文を使用してください。

SET USER=your_name

Unixの上の構文はユーザのシェルに依存します。MYSQL_TCP_PORT変数を使用してTCP/IPポート番号を指定すると仮定してください。典型的な構文(shbashzshなど)は、以下の通りです。

MYSQL_TCP_PORT=3306
export MYSQL_TCP_PORT

最初のコマンドが変数を設定し、また、exportコマンドがシェル環境に変数を輸出することによって、その値がMySQLおよび他のプロセスにアクセス可能になるようになります。

cshtcshについては、シェル変数を環境を利用可能にするためにsetenvを使用してください。

setenv MYSQL_TCP_PORT 3306

環境変数をセットするコマンドは効果を直ちに現わすため、ユーザのコマンドプロンプトで実行することができます。 しかし、このセッティングはログアウトするまでしか続きません。このセッティングがログインごとに効果を発揮するようにするためには、コマンドインタープリタが毎回起動時に解読するスタートアップファイルに適切なコマンド(複数可)を置きます。典型的なスタートアップファイルは、Windows用のAUTOEXEC.BATbash用の.bash_profileあるいはtcsh用の.tcshrcです。詳細についてはコマンドインタープリタについての使用説明を参照してください。

項2.14. 「環境変数」にはMySQLプログラムオペレーションに影響する環境変数が全てリストアップされています。

3.3.4. プログラム変数セットのためのオプション使用

MySQLプログラムの多くがランタイムでセットすることができる内部変数を持っています。プログラム変数は、値をとる他の長いオプションと同じ方法を課されます。例えば、mysqlは、そのコミュニケーションバッファの最大サイズをコントロールするmax_allowed_packet変数を持っています。mysqlのために16MBの値に max_allowed_packet変数をセットするためには、下記コマンドのどちらかを使用してください。

shell> mysql --max_allowed_packet=16777216
shell> mysql --max_allowed_packet=16M

第1のコマンドはバイトで値を指定します。第2はメガバイトで値を指定します。数値の値をとる変数については、値は、1024、10242乗または10243乗、それぞれの乗数を示すために、KMあるいはG(大文字か小文字のいずれか)の接尾辞で与えることができます。(例えば、max_allowed_packetをセットするために使用された時、接尾辞はキロバイト、メガバイトあるいはギガバイトのユニットを示します)。

オプションファイルでは、可変セッティングが主要なダッシュなしで与えられます。

[mysql]
max_allowed_packet=16777216

または :

[mysql]
max_allowed_packet=16M

好みによって変数名中の下線はダッシュとして指定することができます。次のオプショングループは等価です。共に512MBにサーバの重要なバッファのサイズをセットします。

[mysqld]
key_buffer_size=512M

[mysqld]
key-buffer-size=512M

注記 :MySQL 4.0.2以前は、セットするプログラム変数用の唯一の構文は--set-variable=option=value(あるいはオプションファイル中のset-variable=option=value)でした。この構文はまだ存在しますが、MySQL 4.0.2でもクレームが多いものです。

サーバシステム変数の多くはまた、ランタイムでもセットすることができます。詳細は、項4.2.4.2. 「動的システム変数」 をご覧ください。

アダルトレンタルサーバー