紅孔雀 このページをアンテナに追加 RSSフィード

2007-01-04 MySQL の導入 - Windows 編

[][] MySQL の導入 - Windows 編

Windows 環境への MySQL の導入について説明します。セットアップから基本操作、Windows サービスへの登録方法について説明します。


セットアップ

(1) MySQL を入手する

MySQL のサイトから MySQL 5.0 Community Server - Generally Available (GA) Release の Windows 版(Without Installer)をダウンロードします。ここでは現時点の最新バージョンである mysql-noinstall-5.0.27-win32.zip をダウンロードしました。

(2) 適当な場所に展開する

ダウンロードしたファイルを適当な場所に展開します(以後、展開先を MYSQL_HOME とします)。

(3) my.ini の準備

MYSQL_HOME/my-***.ini のどれか適当なものを選び MYSQL_HOME/my.ini にコピー&リネームします。次に、作成した MYSQL_HOME/my.ini の [mysqld] セクションに basedir と datadir を追加します(それぞれ MySQL のインストール・ディレクトリとログ/データベースのディレクトリを意味します):

[mysqld]
basedir=C:/mysql-5.0.22-win32
datadir=C:/mysql-5.0.22-win32/data

注意として、パスの区切り文字に '\' を使用する場合はエスケープして '\\' としなければなりません(区切り文字に '/' を使用する場合は問題ありません):

[mysqld]
basedir=C:\\mysql-5.0.22-win32
datadir=C:\\mysql-5.0.22-win32\\data

基本操作

(1) サーバの起動

Windows NT 系ではサーバ・プログラムとして mysqld-nt を使用します。mysqld-nt はクライアントとの接続に名前付きパイプを使用することに対応していますが、デフォルトでは TCP/IP を使用するようになっているので、ここでは特に気にする必要はありません。

mysqld-nt を起動するには、コンソールで以下のコマンドを実行します(Windows のサービスに登録する方法は後述します):

MYSQL_HOME/bin/mysqld-nt --console

--console オプションはコンソールにエラー出力を行わせるためのものです。今は動作確認をすることが目的なので --console オプションを指定しておきました。

(2) クライアント・ツールで接続する

クライアント・ツール mysql を使用してサーバに接続するには、以下のコマンドを実行します:

MYSQL_HOME/bin/mysql -u root

ここでは初期状態で存在する root ユーザでログインしています。初期状態では root ユーザのパスワードは指定されていないので、上記のようにパスワードを指定せずに接続することができます。ただし、このままではセキュリティ上の問題となるので、後で必ず「root ユーザのパスワードを設定」するとともに「データベースを使用するアプリケーション用のユーザを適宜作成し、適切な権限を与える」べきです。

(3) root ユーザのパスワードを設定する

初期状態では root ユーザのパスワードは設定されていないので、MySQL をインストールしたら、まず最初に root ユーザのパスワードを設定するべきです。設定したいパスワードを mypassword とすると、mysql(クライアント・ツール)で以下のコマンドを実行します:

mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('password');
(4) ユーザを作成する

hoge というユーザに対して hogedb というデータベースの全テーブルに対する全権限を与えるには、以下のコマンドを実行します:

mysql> GRANT ALL PRIVILEGES ON hogedb.* TO hoge@localhost IDENTIFIED BY 'password' WITH GRANT OPTION;
mysql> GRANT ALL PRIVILEGES ON hogedb.* TO hoge@"%" IDENTIFIED BY 'password' WITH GRANT OPTION;
(5) サーバを停止する

サーバを停止するにはコマンドライン・ツール mysqladmin を使用します:

MYSQL_HOME/bin/mysqladmin -u root -p shutdown

上記コマンドを実行すると、パスワードの入力が促され、正しく入力を行うとサーバがシャットダウンされます。また、パスワードは mysqladmin の引数で指定することもできます:

MYSQL_HOME/bin/mysqladmin -u root -ppassword shutdown

しかし、この方法ではコンソールにパスワードが直接表示されることや、入力したコマンドがログに残される可能性を考えると、セキュリティ上好ましくありません。

Windows サービスへの登録と解除

(1) mysqld-nt の実行オプション

サーバ・プログラムである mysqld-nt の引数に「--verbose --help」を与えると、使い方の説明が表示されます:

>mysqld-nt --verbose --help
Usage: mysqld-nt [OPTIONS]
NT and Win32 specific options:
  --install                     Install the default service (NT)
  --install-manual              Install the default service started manually (NT)
  --install service_name        Install an optional service (NT)
  --install-manual service_name Install an optional service started manually (NT)
  --remove                      Remove the default service from the service list (NT)
  --remove service_name         Remove the service_name from the service list (NT)
  --enable-named-pipe           Only to be used for the	default server (NT)
  --standalone                  Dummy option to start as a standalone server (NT)
...
(2) mysqld-nt を Windows サービスに登録する

mysqld-nt を Windows サービスに登録するには、以下のコマンドのいずれかを使用します:

MYSQL_HOME/bin/mysqld-nt --install
MYSQL_HOME/bin/mysqld-nt --install service_name
MYSQL_HOME/bin/mysqld-nt --install-manual
MYSQL_HOME/bin/mysqld-nt --install-manual service_name

まず、--install と --install-manual の違いは、--install オプションで登録すると、Windows の起動時にサービスも自動起動されます。一方の --install-manual オプションで登録した場合は自動起動されないので、必要なときに手作業でサービスを起動したい場合に使用します。また、サービス名はデフォルトでは mysql として登録されますが、異なる名前で登録したい場合は service_name を指定します。例えば mysql_service という名前で Windows 起動時に自動起動されるように登録する場合は、以下のコマンドを実行します:

MYSQL_HOME/bin/mysqld-nt --install mysql_test
(3) サービスの起動と停止

登録したサービスの起動と停止には net コマンドを使用します。mysql という名前でサービスが登録されている場合は、以下のコマンドで起動することができます:

net start mysql

サービスを停止する場合は以下のコマンドを実行します:

net stop mysql
(4) サービスの登録解除

登録したサービスを解除するには、以下のコマンドのいずれかを使用します:

MYSQL_HOME/bin/mysqld-nt --remove
MYSQL_HOME/bin/mysqld-nt --remove service_name

デフォルトの名前で登録されている場合は service_name を省略することができます。