SAK 図書館
MySQL 編1 - インストール、ODBC ドライバ、日本語設定、トランザクション設定
突然、MySQL の最近のものが必要によって、インストールと環境設定を行うこと
にした。インストールに使用したパッケージは、
mysql-4.0.13-win.zip
MyODBC-3.51.06.exe
である。
■MySQL 4.0.13
・zip を解凍して、setup.exe を実行するだけである。
私は、j:\mysql\ にインストールした。
■MySQL ODBC ドライバ 3.51.06
・MyODBC-3.51.06.exe を実行してインストールする。
ODBC の設定は、デフォルトでユーザ DSN に設定されていた。
これは ASP 等で困るので、MySQL のユーザ DSN を削除して、システム DSN
として追加作成した。
ODBC ドライバには、MySQL ODBC 3.51 Driver を指定する。
Data Source Name: MySQL
Description : MySQL ODBC 3.51 Driver DSN
Host/Sercer Name: localhost
Database Name : sak
User : sak
Password :
Port : 3306
■MySQL サービス開始
・開発用なので、手作業で開始処理することにした。
サービスの開始は、次のプログラムを起動すると自動的に行われる。
スタートアップに自動的に組みまれてもいたので、そちらは削除した。
また、サービスにも MySql として自動設定されているので、こちらは
手動に変更した。winmysqladmin.exe を手動で実行すると、サービスの
MySql が開始される。
J:\mysql\bin\winmysqladmin.exe
・サービスの停止は、winmysqladmin.exe で、WINNT、Stop the Service を
右ボタンクリックのメニューから実行する。
尚、winmysqladmin.exe を終了してもサービスは動作している。
Stop the Service を実行しないとサービスは終了しない。
■日本語の設定
・winmysqladmin.exe の my.ini Setup タグで、[mysqld] セクションに
次のとおり追加した。(サービスを停止してから行うこと。)
追加後、Save Nodification ボタンを押して更新しておくこと。
language=j:/mysql/share/japanese
default-character-set=sjis
■トランザクション設定
・winmysqladmin.exe の my.ini Setup タグで、mysqld-nt から
mysqld-max-nt
に変更する。(サービスを停止してから行うこと。)
次に [mysqld] セクションに、次のとおり追加した。
j:/mysql/data/trans/ フォルダは手作業で作成しておく。
追加後、Save Nodification ボタンを押して更新し、サービスを起動する。
尚、この設定は InnoDB 方式なのだが、もうひとつ別の設定方法もあった。
innodb_data_file_path=ibdata1:64M
innodb_data_home_dir=j:/mysql/data/trans/
innodb_log_group_home_dir=j:/mysql/data/trans/
innodb_log_arch_dir=j:/mysql/data/trans/
set-variable=innodb_mirrored_log_groups=1
set-variable=innodb_log_files_in_group=3
set-variable=innodb_log_file_size=5M
set-variable=innodb_log_buffer_size=8M
innodb_flush_log_at_trx_commit=1
innodb_log_archive=0
set-variable=innodb_buffer_pool_size=16M
set-variable=innodb_additional_mem_pool_size=2M
set-variable=innodb_file_io_threads=4
set-variable=innodb_lock_wait_timeout=50
・実際にトランザクションを使用するには、テーブル単位に type=InnoDB を
指定しなければならない。
作成時になら、create table ... type=InnoDB; と、
既に作成済みなら、alter table ... type=InnoDB;
alter のとき、文字化けのエラーのようなものが返ってくるのだが、
Warnings: 0 で、正常にトランザクションは使用できた。
create table test (a char(4)) type=InnoDB;
alter table test type=InnoDB;
・トランザクションの操作は、次のようにする。
尚、begin; でトランザクションを開始しない場合、オートコミットされる
ようである。オートコミットの場合、ロールバックは使えない。
-- オートコミット
insert into test values ('a001');
insert into test values ('b002');
-- トランザクションコミット
begin;
insert into test values ('a100');
insert into test values ('b100');
commit;
-- トランザクションロールバック
begin;
insert into test values ('y999');
insert into test values ('z999');
rollback;
select * from test;
+------+
| a |
+------+
| a001 |
| b002 |
| a100 |
| b100 |
+------+
・my.ini 全体は、次のようになっている。
#This File was made using the WinMySQLAdmin 1.4 Tool
#2003.05.26 16:04:25
#Uncomment or Add only the keys that you know how works.
#Read the MySQL Manual for instructions
[mysqld]
basedir=J:/mysql
#bind-address=10.1.1.2
datadir=J:/mysql/data
#language=J:/mysql/share/your language directory
language=j:/mysql/share/japanese
default-character-set=sjis
#slow query log#=
#tmpdir#=
#port=3306
#set-variable=key_buffer=16M
innodb_data_file_path=ibdata1:64M
innodb_data_home_dir=j:/mysql/data/trans/
innodb_log_group_home_dir=j:/mysql/data/trans/
innodb_log_arch_dir=j:/mysql/data/trans/
set-variable=innodb_mirrored_log_groups=1
set-variable=innodb_log_files_in_group=3
set-variable=innodb_log_file_size=5M
set-variable=innodb_log_buffer_size=8M
innodb_flush_log_at_trx_commit=1
innodb_log_archive=0
set-variable=innodb_buffer_pool_size=16M
set-variable=innodb_additional_mem_pool_size=2M
set-variable=innodb_file_io_threads=4
set-variable=innodb_lock_wait_timeout=50
[WinMySQLadmin]
Server=J:/mysql/bin/mysqld-max-nt.exe
user=sak
password=********
■データベースの作成
・データベースを次のように作成した。
test と言うデータベースは削除した。
対話型ツール mysql.exe を次のように起動する。
終了は、\q である。
J:\mysql\bin\mysql.exe -u root mysql
・mysql.exe 上で次のように処理した。
drop database test;
create database sak;
■ユーザの作成
・ユーザの作成を次のようにした。
マニュアルを見て、パスワードを指定すると、ODBC も mysql.exe でも接続
出来ず、仕方なく update でパスワードを消した。
ユーザ sak に全ての権限を与えている。
insert into user (Host, User, Password) values ('localhost', 'sak', PASSWORD('sak'));
update user set Password='' where User='sak';
grant all on *.* to sak@localhost;
■以後のログイン
・データベース sak にユーザ sak でログインするには、次のようにする。
J:\mysql\bin\mysql.exe -h localhost -D sak -u sak
■mysql.exe での日本語表示
・日本語の設定をしたためか、項目名やデータに日本語が含まれていても正常
に mysql.exe で select 表示できた。
select * from testm;
+--------+---------+---------+---------+
| キー | データ1 | データ2 | データ3 |
+--------+---------+---------+---------+
| x001 | 1 | 2 | 3 |
| x002 | 10 | 20 | 30 |
| 日本語 | 1 | 2 | 3 |
| かんじ | 10 | 20 | 30 |
+--------+---------+---------+---------+
■MySQL 編資料
■PostgreSQL 編、JAVA Servlet、JSP 編資料
■SQL 基礎編資料
■SQL 基礎実地編資料
■SQL チューニング編資料
■Oracle PL/SQL 編資料