Webの開発環境を構築する
第2回 MySQLの設定
前回に最低限必要なWebサーバとしてApacheの設定を行いました。
さて、ここでPerlなりのCGIの環境を・・・と行きたい所なのですが、その前にデータベースの設定を行いたいと思います。
最近ではレンタルサーバ等でもデータベースが使用出来る所が増えて来ました。
データベースを使用する事はセキュリティ的にも速度的にもデータの管理上も良い事が多いです。
ある程度の規模のサイトを作るには避けては通れない所です。
今回はレンタルサーバ等でも使用頻度の高いMySQLの環境を構築していきます。
(MySQL自体はプロバイダによっても、使われているバージョンがまちまちで、細かい所では動作も違いますので、
ここではMySQL 4.1.22とMySQL 5.0.45の2つの環境を同じパソコン上に構築し、相互に使い分ける設定を行います。)
※御使用になる環境に応じて、設定を読み飛ばして頂いても問題無いです。
あくまでも開発用の環境の構築になりますので、自宅サーバ用途等のセキュリティの対策は今回は対象としていません。
以上の事を踏まえた上で記事を読み進めて下さい。
それでは、早速、本題に入りましょう。
(今回の環境設定は、かなり長い手順になりますが根気良くお付き合い下さい)
MySQLの環境構築
- MySQLのサイト
- Windows版のダウンロード
ダウンロードのリンクから移動した先の、左側メニューからMySQLCommunity Serverを選択します
デフォルトでは5.0が選択されていますので、お好きなバージョンを選択します。
今回は4.1と5.0のバージョンをインストールしますので、まずは左メニュー4.1を選択します。
右側本文よりWindowsを選択後、Windows Essentialsから4.1.22のDownloadを選択し、
mysql-essential-4.1.22-win32.msiをダウンロードします。
同様に5.0.45もダウンロードします。
- MySQL 4.1.22のインストール
ダウンロードをしたmysql-essential-4.1.22-win32.msiをダブルクリックして、インストールを開始します。
Nextボタンをクリック
「Custom」を選択しNextボタンをクリック
インストール先にd:\usr\MySQL4.1.22\を入力しNextボタンをクリック
Installボタンをクリック
MySQL 4.1.22のソフトウェアのインストールが開始されます
「Skip Sign-Up」を選択しNextボタンをクリック
「Configure the MySQL Server now」のチェックを外し、Finishボタンをクリック
ここまででインストールは終了です。続けて設定を行います。
(ここで、そのまま設定に進む事も出来ますが、設定に失敗する事もありますのでチェックを外して、個別に設定を行います)
※個別の設定も同一のGUIベースの手順です
- MySQL4.1の設定
スタートメニューから「MySQL」−「My SQL Server4.1」−「MySQL Server Instance Config Wizard」をクリック
Nextボタンをクリック
「Detailed Configuration」を選択しNextボタンをクリック
今回は開発用の設定なので「Developer Machine」を選択しNextボタンをクリック
「Multifunctional Database」を選択しNextボタンをクリック
Nextボタンをクリック
「Decision Support (DSS)/OLAP」を選択しNextボタンをクリック
Port Numberに「3306」を選択しNextボタンをクリック
「Manual Selected Default Character Set / Collation」を選択後、
Character Setに「sjis」を選択しNextボタンをクリック
Server Nameに「MySQL41」を選択しNextボタンをクリック
New root passwordとConfirmにrootのパスワードを入力
今回はテスト用の環境なのでEnable root access from remote machinesのチェックは外したままでNextボタンをクリック
Executeボタンをクリック
ここまでに入力した設定が自動的に行われます
Finishボタンをクリックして下さい。
インストールしたディレクトリにmy.iniファイルがあります
テキストエディタ(秀丸やメモ帳など)で開き、ファイルを編集します
- clientからの接続をデフォルトの文字セットにあわせる
[mysqld]
# The TCP/IP Port the MySQL Server will listen on
port=3306
#Path to installation directory. All paths are usually resolved relative to this.
basedir="D:/usr/MySQL4.1.22/"
#Path to the database root
datadir="D:/usr/MySQL4.1.22/Data/"
# The default character set that will be used when a new schema or table is
# created and no character set is defined
default-character-set=sjis
↓ [mysqld]セクションのdefault-character-setの記述の下に記述を追記
[mysqld]
# The TCP/IP Port the MySQL Server will listen on
port=3306
#Path to installation directory. All paths are usually resolved relative to this.
basedir="D:/usr/MySQL4.1.22/"
#Path to the database root
datadir="D:/usr/MySQL4.1.22/Data/"
# The default character set that will be used when a new schema or table is
# created and no character set is defined
default-character-set=sjis
skip-character-set-client-handshake
ファイルを保存したら設定は終了です。
- 同様にMySQL 5.0.45もインストール
ダウンロードをしたmysql-essential-5.0.45-win32.msiをダブルクリックして、インストールを開始します。
Nextボタンをクリック
「Custom」を選択しNextボタンをクリック
インストール先にd:\usr\MySQL5.0.45\を入力しNextボタンをクリック
Installボタンをクリック
MySQL 5.0.45のソフトウェアのインストールが開始されます
Nextボタンをクリック
Nextボタンをクリック
「Configure the MySQL Server now」のチェックを外し、Finishボタンをクリック
ここまででインストールは終了です。続けて設定を行います。
(ここで、そのまま設定に進む事も出来ますが、設定に失敗する事もありますのでチェックを外して、個別に設定を行います)
※個別の設定も同一のGUIベースの手順です
- MySQL5.0の設定
スタートメニューから「MySQL」−「My SQL Server4.1」−「MySQL Server Instance Config Wizard」をクリック
Nextボタンをクリック
今回インストールしたMy SQL Server5.0を選択しNextボタンをクリック
複数のバージョンがインストールされているとServer選択の画面が表示される。
「Detailed Configuration」を選択しNextボタンをクリック
今回は開発用の設定なので「Developer Machine」を選択しNextボタンをクリック
「Multifunctional Database」を選択しNextボタンをクリック
Nextボタンをクリック
「Decision Support (DSS)/OLAP」を選択しNextボタンをクリック
複数のバージョンをインストールしている場合には、Portが同一だと動作に弊害があるので今回は
Port Numberに「3307」を選択しNextボタンをクリック
※当該バージョンのみのインストール時はデフォルトの「3306」で良いです
「Manual Selected Default Character Set / Collation」を選択後、
Character Setに「sjis」を選択しNextボタンをクリック
Server Nameに「MySQL501」を選択しNextボタンをクリック
(Windows起動時に自動でMySQLを実行したく無い場合にはLaunch the MySQL Server automaticallyのチェックを外す)
New root passwordとConfirmにrootのパスワードを入力
今回はテスト用の環境なのでEnable root access from remote machinesのチェックは外したままでNextボタンをクリック
Executeボタンをクリック
ここまでに入力した設定が自動的に行われます
この画面が表示されたら設定は終了です。Finishボタンをクリックして下さい。
- MySQLの動作確認
MySQLをインストールしたディレクトリ配下のbinディレクトリでコマンドプロンプトを開く
- コマンドラインから以下のコマンドを実行
Enter passwordの要求がされるので、インストール時に設定したrootのパスワードを入力
- 定義済みのデータベースを表示するコマンドを実行
SHOW DATABASES;
ここまでの操作結果
MySQL 4.1.22の初期状態では、「mysql」と「test」があるのがわかる。
(MySQL 5.0.45では「information_schema」、「mysql」、「test」がある)
testデータベースは、テスト用のデータベースなので、そのまま使用しても良いのですが、
今回は手順にも慣れる為、自分用のデータベースを定義してみます。
- Testデータベースの削除
- 自分用のテストデータベース「test_db」を作成
これで、デフォルトのtestというデータベースを削除し、自分用のデータベースを作成しました。
- もう一度、SHOWコマンドで確認してみて下さい。
SHOW DATABASES;
ここまでの操作結果
- 新しいデータベースを操作する専用のユーザを定義します
GRANT SELECT,INSERT,DELETE,UPDATE,CREATE,DROP,ALTER,INDEX ON test_db.* TO test@localhost IDENTIFIED BY 'test';
FLUSH PRIVILEGES;
追加したユーザはmysqlデータベースのuserテーブルに作成されます。
- 追加したユーザを確認してみましょう
SELECT HOST,USER,PASSWORD FROM mysql.user;
(ユーザを削除するには、このテーブルからユーザを削除します)
ここまでの操作結果
ここで、一度データベースの接続を解除し、作成したユーザで作業を続けます。
- 接続の解除
- 再接続します
ここまでの操作結果
(ユーザを削除するには、このテーブルからユーザを削除します)
MySQL4.1系、MySQL5.0系に対して、PHP4.x.x系〜やRubyから接続する際に
MySQLの暗号化が変わった為、初期状態ではアクセス出来ません。
- Mysqlコマンドにて、以下のコマンドを実行し、旧パスワード体系に変更します
SET PASSWORD FOR ユーザID@接続先のホスト名 = OLD_PASSWORD('旧パスワード');
試しに、rootユーザーで接続しなおして、ユーザの登録状態を確認すると
パスワードの長さが短くなっている事が確認出来る筈です
(MySQLの各バージョンにてパスワードの設定をして下さい)
- 作成したデータベースに接続します
- データベースにテーブルを作成します
(通常のDatabaseではテーブルスペースというものの存在を意識しますが、
MySQLでは、その概念がありませんので、データベース作成後はすぐにテーブルの作成になります)
CREATE TABLE test_table (
code INT(2) ,
name VARCHAR(30)
) ;
- テーブルが作成されたか確認する
参考
テーブルの作成表定義を表示する
SHOW CREATE TABLE test_table;
テーブルの構造を表示する
- テーブルにテスト用のデータを追加します。
INSERT INTO test_table VALUES(1,'MySQL4.1.22 Data');
INSERT INTO test_table VALUES(2,'日本語表示もテスト');
- これで2行のデータが作成されましたので、内容を確認してみましょう。
SELECT * FROM test_table;
- テスト準備は完了しましたので、接続を解除して終了です。
続いてMySQL 5.0.45のデータベースも同様に用意しますが、今回はSQLのコマンドファイルを用意して
バッチ実行してみます。(testデータベースの削除は行いません)
- 以下の用なファイルをd:\tempに用意します
MySQLTEST.sql
SHOW DATABASES;
CREATE DATABASE IF NOT EXISTS test_db;
SHOW DATABASES;
GRANT SELECT,INSERT,DELETE,UPDATE,CREATE,DROP,ALTER,INDEX
ON test_db.* TO test@localhost IDENTIFIED BY 'test';
FLUSH PRIVILEGES;
SELECT HOST,USER,PASSWORD FROM mysql.user;
SET PASSWORD FOR test@localhost = OLD_PASSWORD('test');
SELECT HOST,USER,PASSWORD FROM mysql.user;
USE test_db;
CREATE TABLE IF NOT EXISTS test_table (
code INT(2) ,
name VARCHAR(30)
) TYPE=InnoDB;
SHOW TABLES;
SHOW CREATE TABLE test_table;
DESCRIBE test_table;
DELETE FROM test_table;
INSERT INTO test_table VALUES(1,'MySQL5.0.45 Data');
INSERT INTO test_table VALUES(2,'日本語表示もテスト');
SELECT * FROM test_table;
- SQLファイルを使用してテスト環境を作成
mysql -vvv -u root -p < d:/temp/MySQLTEST.sql
実行のイメージ
参考
テーブルデータのエキスポートを行うにはファイルへのアクセス権限のあるユーザにて
以下の様なSQL文で出力出来ます。
SELECT * FROM test_table INTO OUTFILE "d:/temp/data.txt" FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\r\n';
(ディレクトリは¥では無く/(バックシュラッシュ)なのに注意)
また、テーブルデータのインポートを行うには以下の様なSQL文です。
LOAD DATA LOCAL INFILE "d:/temp/data.txt" INTO TABLE test_table FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\r\n';
以上でMySQLの設定は完了です。
このシリーズでは、インストール・環境設定・動作確認をセットにした構成で進めていますが、
今後のPerl・PHP等の設定では、今回作成したデータベースへの接続のテストまで行います。
次回の予定は、Perlの設定とMySQLとの接続を予定しています。
この様な記事が技術者の第一歩として、助けになれば幸いです。
2007/09/12
Webの開発環境を構築する