NT ファミリ(Windows NT、2000、または
XP)では、MySQL を Windows
サービスとしてインストールして実行することをお勧めします。Windows
の起動時または停止時に、MySQL
サーバが自動的に起動または停止されます。サービスとしてインストールされたサーバは、NET
コマンドを使用してコマンドラインから制御するか、Services
ユーティリティを使用して制御することができます。
Services
ユーティリティ(Windows
Service Control Manager
)は、Windows
Control Panel
(Windows 2000
のAdministrative
Tools
の下)にあります。このコマンドラインからサーバのインストールや削除の操作を実行している間は、Services
ユーティリティを終了することをお勧めします。これによって、ある種の予期しないエラーが防止されます。
Windows NT 4 で、MySQL を TCP/IP と連動させるには、Service Pack 3 以上をインストールする必要があります。
MySQL を Windows サービスとしてインストールする前に、まず、以下のコマンドを使用して現在のサーバを停止してください(サーバが稼動している場合)。
shell> C:\mysql\bin\mysqladmin -u root shutdown
このコマンドは、MySQL 管理ユーティリティ
mysqladmin
を起動して、サーバに接続してシャットダウンするよう指示します。このコマンドは、MySQL
権限システム内のデフォルトの管理者アカウントである
root
として接続します。MySQL
権限システム内のユーザは、Windows
のログインユーザから完全に独立しています。
次に、以下のコマンドでサーバをサービスとしてインストールします。
shell> mysqld --install
サーバ名だけを使用して mysqld
をサービスとしてインストールする際に問題が発生した場合は、完全パス名を使用してインストールしてみてください。
shell> C:\mysql\bin\mysqld --install
MySQL 4.0.2 以降では、--install
オプションの後ろに特定のサービス名を指定できます。さらに、MySQL
4.0.3 以降では、サービス名の後ろに
--defaults-file
オプションを指定して、起動時のオプションを取得する場所をサーバに示すことができます。サーバが使用するサービス名とオプション設定ファイルは、以下のルールに従って決定されます。
サービス名を指定しないと、サーバはデフォルトサービス名
MySQL
を使用し、デフォルトのオプション設定ファイルの
[mysqld]
グループからオプションを読み取る。
--install
オプションの後ろにサービス名を指定すると、サーバは
[mysqld]
オプショングループを無視し、そのサービスと同じ名前のグループからオプションを読み取る。サーバは、デフォルトのオプション設定ファイルからオプションを読み取る。
サービス名の後ろに
--defaults-file
オプションを指定すると、サーバはデフォルトのオプション設定ファイルを無視し、指定ファイルの
[mysqld]
グループだけからオプションを読み取る。
注意: 4.0.17 より前の
MySQL バージョンでは、Windows
サービスとしてインストールされたサーバのパス名やサービス名にスペースが含まれていると、起動時に問題が発生します。したがって、C:\Program
Files
などのディレクトリに MySQL
をインストールしたり、スペースを含んだサービス名を使用したりすることは避けてください。
通常どおりに --install
を使用してサーバをインストールした場合は、サーバは
MySQL
のサービス名でインストールされます。
さらに複雑な例として、以下のコマンドを考察してみます。
shell> C:\mysql\bin\mysqld --install mysql --defaults-file=C:\my-opts.cnf
ここでは、--install
オプションの後ろにサービスを指定しています。このコマンドで
--defaults-file
オプションを指定しないと、サーバは標準のオプション設定ファイルから
[mysql]
グループを読み取ります(このオプショングループは
mysql
クライアントプログラムが使用するものであるため、これは推奨できません)。ただし、--defaults-file
オプションを指定しているため、サーバは、指定ファイルの
[mysqld]
オプショングループだけからオプションを読み取ります。
MySQL サービスを起動する前に、Windows
サービス
ユーティリティで
``Start parameters
''
としてオプションを指定することもできます。
MySQL
サーバをサービスとしてインストールすると、Windows
が起動するたびに MySQL
サービスが自動的に起動されます。サービスは、サービス
ユーティリティから直接起動するか、コマンド
NET START MYSQL
を使用して起動することもできます。NET
コマンドは、ケース依存ではありません。
注意: mysqld
は、サービスとして実行されるとコンソールウィンドウにアクセスできないので、コンソールウィンドウにメッセージは表示されません。mysqld
が起動しない場合は、エラーログをチェックして、問題の原因を示すメッセージが書き込まれていないかどうかを確認してください。
エラーログは、C:\mysql\data
ディレクトリにあります。これは、.err
というサフィックスが付いたファイルです。
サービスとして稼動している
mysqld
は、サービス
ユーティリティ、NET STOP MYSQL
コマンド、または mysqladmin
shutdown
コマンドを使用して停止することができます。Windows
がシャットダウンするときにサービスが稼動している場合は、Windows
によってサーバが自動的に停止されます。
MySQL バージョン 3.23.44
からは、ブートプロセス中にサービスを自動的に起動させたくない場合、Manual
サービスとしてサーバをインストールすることができます。その場合は、以下のように、--install
オプションではなく、--install-manual
オプションを使用します。
shell> C:\mysql\bin\mysqld --install-manual
サービスとしてインストールされたサーバを削除するには、サーバが稼動している場合は、まずサーバを停止します。次に、--remove
オプションを使用して、サーバを削除します。
shell> mysqld --remove
MySQL サービス自動シャットダウンの 1
つの問題は、3.23.49 より前のバージョンの MySQL
の場合、Windows
がシャットダウンの完了まで数秒間しか待機せず、この制限時間を超過するとデータベースサーバプロセスが強制終了されるという点です。これによって、問題が発生することがありました(たとえば、InnoDB
ストレージエンジンは次回の起動時にクラッシュリカバリを実行する必要があるなど)。MySQL
バージョン 3.23.49 以降は、MySQL
サーバのシャットダウンの完了までの Windows
の待機時間が延長されています。この待機時間でもインストールに十分でないと思われる場合、最も安全なのは、MySQL
サーバをサービスとして実行しないことです。代わりに、MySQL
サーバの起動はコマンドラインプロンプトから行い、停止は
mysqladmin shutdown
を使用して行ってください。
MySQL
サーバの停止時に待機時間を延長するよう
Windows に指示するための変更は、Windows 2000
および XP には有効ですが、Windows NT
には有効ではありません。Windows NT
の場合、サービスのシャットダウンのための待機時間は
20
秒だけで、この時間が経過すると、サービスプロセスは強制終了されます。レジストリエディタ
\winnt\system32\regedt32.exe
をたち上げ、レジストリツリー内の
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control
の WaitToKillServiceTimeout
の値を編集して、このデフォルト値を増やすことができます。デフォルト値より大きい新しい値をミリ秒単位で指定します(たとえば、値
120000 を指定すると、Windows NT は最大で 120
秒間待機します)。
mysqld
をサービスとして起動しない場合は、NT
ベース以外の Windows
のバージョンの場合と同様にコマンドラインから起動することができます。手順については、項2.1.1.6. 「Windows 95、98、または Me での MySQL の起動」
を参照してください。
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.