目次

インストール:MySQL

msiはいろいろ勝手に設定してくれるんだけど、どこをどう設定されたかわからないから何となく嫌だ。ZIPから設定してみる。

環境:Windows XP/7 32/64 bit

ダウンロード

MySQLダウンロードページ

OSに合わせて
「Windows (x86, 32-bit), ZIP Archive」
「Windows (x64, 64-bit), ZIP Archive」を選ぶ。

「Windows (x86, 32-bit)」は2つあるが、サイズの明らかに小さい方はソースコードなので、大きい方。

適当な場所に解凍。({MySQLフォルダ}と表す)
初期設定はC:\直下に配置されることを前提としてビルドされているらしい。

環境変数の設定

{MySQLフォルダ}\bin

my.iniの編集

my_○○.ini(設定項目の多さ別に設定例が複数用意されている) 普通はsmallでよい。コピーして「my.ini」にリネーム

以下を追加したり編集したり。

[client]
password = <your_password>
socket = {MySQLフォルダ}/tmp/mysql.sock
default-character-set = utf8

[mysqld]
socket = {MySQLフォルダ}/tmp/mysql.sock
character_set_server=utf8
#skip-character-set-client-handshake

[mysql]
default-character-set=utf8

注意点

socket

[client]
socket = ...

socketはUNIXソケット接続をする際に必要だが、Windowsではどういう扱いになるのかよくわかっていない。適当でも問題ない、かも。

文字コード

[mysqld]
character-set-server=utf8

デフォルトの文字コードをutf8にする。

検索すると、「default-character-set」と指定しなさいというページが多くヒットするが、 MySQL5.5からは、mysqld(サーバ側)の文字コード指定は上記に変更されている。注意。 my.iniの内容を解釈できないときは、サーバ起動時に1067エラーが発生する。

デフォルト文字コード設定は、 DB毎、テーブル毎、接続毎に文字エンコーディングの設定をすれば必要ない。 現在はそういう逐次の設定が推奨されているので、利用時に心がけるなら無指定でもよい。

skip-character-set-client-handshake

[mysqld]
skip-character-set-client-handshake

検索すると指定している例が出てくるが、指定しない方がよい。

これはクライアントがどんな文字コード設定をもっていようが、 問答無用で character_set_* を (_system をのぞいて)サーバと同じ値に統一する命令で、 ほとんどの場合正しく動いて文字化けの防止に役立つが、 文字コードを偽装しつつMySQLの文字コード解釈の不備を突くといったセキュリティ上の問題もあるらしい。

起動テスト

サービスとして登録する前に、ちゃんと立ち上がるかテスト

サーバ立ち上げ

コマンドプロンプト上で以下を実行

> mysqld --defaults-file={MySQLフォルダ}\my.ini --standalone --console

Vista以降で「Windows セキュリティの重要な警告」が出たら、「ブロックを解除する」

何かいろいろ出て、入力できない状態で止まったらそれを消さずに置いておく。

rootでログイン

新しいコマンドプロンプトから、

> mysql -u root -p

「root」という名前のユーザで、パスワードを指定してMySQLサーバに接続。

root@localhostの初期設定はパスワードが空文字列なので、パスワード入力を求められたら無入力でエンター。

Welcome~~と出たら成功。待機時の文字が「mysql>」となる。試しに

SHOW databases;

とでも入力して、データベース一覧が見れるか確認。

サーバの終了

mysql> exit

でログアウト。 通常状態に戻ったコマンドプロンプトから、次を実行。

> mysqladmin -u root -p shutdown

パスワード入力画面でエンターを入力すると、mysqlサーバを停止できる。 (最初に立ち上げた黒い画面のままのcmdが、待機状態に戻る)

サービスに登録

上記の手順まででは、環境変数の設定を除きレジストリは全くいじられない。しかし、使うたびにサーバを開始・停止させていたのでは正直めんどくさい。

サービスに登録すると起動時に自動的に立ち上がるし、cmdも画面に残さなくてよい。

管理者権限のコマンドプロンプトから、以下を実行。

> mysqld --install MySQL --defaults-file={MySQLフォルダ}\my.ini

滅多に使わない&メモリが足りないという環境では、必ずしも必要ない。
その際は起動テストの「サーバ立ち上げ」「ログイン」「サーバ終了」のバッチファイルを作っておくと楽。