Live Search 教えて! goo Yahoo 検索 ask.jp Baidu ウェブ魚拓
  2009 4
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    

フリーで便利なソフト ( Win )
WinSCP : パソコン同士のファイル転送を暗号化、安全に転送してくれるソフト
Sakura Editor : " ホームページを作ろう " でも紹介している高機能なエディター
PictBear : レタッチソフト。これがフリーだから驚きます。操作も直感的
DeepBurner : データ CD / DVD の作成や、音楽 CD 作成、ISOイメージの書き込みなどが行える
アタッシェケース : 暗号アルゴリズム " Rijndael " を採用した強力なファイル / フォルダ暗号化ソフト
SoftPerfect File Recovery : ごみ箱から削除したファイルを復元してくれるソフト
BullZip PDF Printer : 紙に印刷する代わりにPDFファイルとして保存してくれるソフト
SmileDownloader : " ニコニコ動画 " "YouTube " の動画を IE の右クリックメニューから簡単に保存できる優れもの
Hard Disk Monitor : ハードディスク全体の健康チェックやバッドセクターの検出、ハードディスクの詳細なスペックなどなど
素材を拝借する際は各サイト様の利用規約をよくお読み下さい。
QR コードの使い方
貴方様のIPアドレスは
216.98.130.26


Win XP でサーバー
MySQL サーバー

2009 / 04 / 12 更新

2008 年初頭、MySQL は Sun Microsystems に買収され、今ではダウンロードするにもログインが必要になってしまいました。まあそれがビジネスだと言ってしまえばそれまでですが。ただ、唯一の救いは未だフリー ヴァージョンをダウンロードできるということ。

ここでは MySQL の基本について述べたいと思います。

また、phpMyAdmin 以外の新たな管理ツールの選択肢として、

EMS SQL Manager 2007 Lite for MySQL ( GUI )

を使った管理方法は必見かもしれません。

ここでの検証は MySQL4.0.26 で行っております。このヴァージョン迄は、設定ウイザードがない分インストールが速い 。1 分もあれば完了してしまいます。すなわちネットカフェでの実験にはもってこい ( 笑 )

静的なデータベースサーバーについては LDAP サーバー を、Active Directory の構成は コチラ を、Microsoft SQL Server 2000 については ココ をご覧下さい。

☆ 最初に設定しておくべきこと

MySQL をインストールした直後、まず行っておくべき設定について説明致します。

【 環境変数にパスを登録 】

コマンド プロンプト上で MySQL のプログラムを実行する際、わざわざ C:¥mysql¥bin に移動しなくても済むよう、環境変数にパスを登録しておきます。

" マイ コンピュータ " を右クリック、" プロパティ " を開き、" 詳細設定 " タブをクリックした後 " 環境変数 " をクリック。

システム環境変数から " Path " を選択、" 編集 " をクリックして

変数値の最後に ;C:¥mysql¥bin ( 頭にセミコロンが付いていることに注意 ) を追記して下さい。赤線参照

全てのウインドウを閉じた後、C:¥>set path コマンドでパスが通っていることを確認します。

【 my.cnf の設置とポートの変更 】

後々、インターネット上からも MySQL を管理するようであれば、セキュリティ強化のためにもデフォルトのポート 3306 の変更をお奨めします。

最初に、MySQL 設定ファイルの設置から行います。

C:¥>mysql を開き、my-medium ファイルをコピー、同じ階層に貼り付け、ファイル名を my として下さい。

決して my.ini や my.cnf ではありません。

理由は、dir コマンドで C:¥>mysql を見ると、my-medium ファイルにはすでに .cnf という拡張子が付いています。XP のエクスプローラでは、この拡張子が見えません。それ故コピーしたファイルの名前を拡張子なしの my としてあります。

念のためリネームした my ファイルが、コマンドプロンプトから見て my.cnf となっていることを確認して下さい。

Vista の場合には、エクスプローラから拡張子 .cnf を見ることが出来ます。

因みに my.ini は %SystemRoot% に存在します。

my ( .cnf ) ファイルを適当なエディタで開き下記画像の赤線部分を 3306 から 63306 に書き換え、保存。

そして、次のコマンドをタイプ、

C:¥>mysqld --defaults-file=C:¥mysql¥my.cnf

エンターを押して MySQL を起動します。

--defaults-file=C:¥mysql&my.cnf は my.cnf を設定ファイルとして読み込ませるためのオプションです

コマンドプロンプトが開いた状態で、もうひとつ別のコマンドプロンプトを起動して下さい。

以下のコマンドを実行して MySQL に ( root ユーザーで ) 接続します。

C:¥>mysql -u root -b

-u はユーザーを指定するオプションで、-u の代わりに --user=root としても OK 。

また -b ( --no-beep ) は、エラー時のビープ音を消音するオプションです。

すると上記のようなエラーが返されます。これは当たり前で、理由はデフォルトの 3306 ポートで接続を試みているからに他なりません。つまり my.cnf の設定が反映されているのが判ります。そこで今度は my.cnf で設定したポート番号を指定して MySQL に接続します。

オプションとして --port=<ポート番号>を付加。ポート番号に先程 my.cnf で変更した 63306 を入力して下さい。

C:¥>mysql -u root --port=63306 -b

無事 MySQL monitor が開きました。

ポートの状態は mysql>status コマンドで確認出来ます。また C:¥>netstat -an で 63306 ポートが Listening されていることも併せて確認しておいて下さい。

mysql>quit コマンドを実行、接続を切断します。

【 Windows サービス に登録 】

常時、コマンドプロンプトを 2 つ起動させておく必要がないよう MySQL を Windows サービスに登録します。

登録させるためのコマンドは

C:¥>mysqld-nt --install MySQLd_Service
--defaults-file=C:¥mysql¥my.cnf ( 一行で )

この例では、サービスとして登録する名前 ( 任意 ) を MySQLd_Service としました。

またサービス開始と同時に my.cnf ファイルを読み込ませるため --defaults-file オプションを付加してます。

上記画像のように " Service successfully installed. " と表示されれば OK です。

[ コントロール パネル ] → [ 管理ツール ] から " サービス " を起動して下さい。そして MySQLd_Service を選択 ( 反転 ) させた後、" サービスの開始 " ( 赤矢印 ) をクリックします。

もし " サービスの開始 " をクリックして " サービスが開始できませんでした " と表示された場合は、タスクマネージャーで mysqld.exe のプロセスを終了させるか、以下のコマンドを実行した後、改めて " サービスの開始 " を試みて下さい。

C:¥>mysqladmin shutdown -u root --port=63306

XP では上記の方法で登録出来ますが、Vista の場合は
Install/Remove of the Service Denied !
と表示され、サービスそのものに登録が出来ません。

対処法としては、[ コントロール パネル ] から " ユーザー アカウント " を起動、" ユーザー アカウント制御の有効化または無効化 " を開き、" ユーザー アカウント制御 ( UAC ) ... " の前のチェックを外します。そしてコマンドプロンプトを起動する際、右クリックして " 管理者として実行 " を選択した後、サービスの登録を再度行って下さい。

Windows サービスに登録後は、次のコマンドを使ってサーバーの起動及び停止を行うことが出来るようになります。

C:¥>net start MySQLd_Service ( 起動 )

C:¥>net stop MySQLd_Service ( 停止 )

【 root のパスワード設定 】

現時点で root ユーザーが MySQL に接続する際、パスワードなしで接続出来ます。このことはセキュリティ上、大変よろしくありません。そこで root ユーザーにパスワードを設定します。

ここでは、パスワードを mohimohi としました。以下のコマンドをご覧下さい。

mysql>set password
->for root=password('mohimohi');

実行後、mysql>quit 。改めて、
C:¥>mysql -u root --port=63306 -b
で MySQL に接続してみると

エラーが返されました。

今度はパスワードオプション -p を付けて接続。

C:¥>mysql -u root -p --port=63306 -b

Enter password: と表示されたら、先程設定したパスワード mohimohi を入力、エンターを押して下さい。

無事 MySQL monitor に接続出来ました。

-p オプションに限り --password='mohimohi' としてはいけません ! クエリ ログに残る可能性があります。

【 匿名ユーザーの削除 】

ユーザー指定なしで MySQL に接続出来るかどうかを確認して下さい。すなわち

C:¥>mysql --port=63306

難なく接続出来ました。これは匿名ユーザーが MySQL に登録されている証です。

匿名ユーザー自身、接続するための権限 ( Usage ) しか持たないので然程気にする必要はありませんが、一応削除する方法を記しておきます。

ユーザーならびにホストの情報は mysql という特別なデータベースに管理されています。この管理データベースにアクセスするためにはあらかじめ root ユーザーで MySQL に接続されていなければなりません。

一旦 MySQL から接続を断ちます。

mysql>quit;

そして root ユーザーでログインし直します。

C:¥>mysql -u root -p --port=63306 -b

まず管理データベース mysql を選択するため、以下のコマンドを入力、実行して下さい。

mysql>use mysql;

下記画像のように Database changed と表示されれば OK です。

次に下記のコマンドを実行します。

mysql>select User,Host from user;

上記画像において、User の列 ( カラムといいます ) に空白部分があるのが判ります。これが匿名ユーザーです。

それでは delete コマンドを使ってこの行そのものを削除します。

mysql>delete from user where User='';

このコマンドの意味は、どこを、User が空白の部分、すなわち User='' 。どのテーブルから user 。そして delete 、削除を実行。

もう一度 select User,Host from user コマンドを実行して、空白のユーザーが削除されたことを確認して下さい。

また権限テーブルに変更を与えた際は以下のコマンド

mysql>flush privileges;

を実行しておきます。

改めて匿名ユーザーで接続を試みると

mysql>quit;

C:¥>mysql --port=63306

拒否されました。

もし、後々匿名ユーザが必要になった場合は コチラ をご覧下さい。

-----------------------------------------

接続する際 -s ( Silent ) オプションを付けると ... 例えば

C:¥>mysql -u root -p --port=63306 -b -s

☆ 新規ユーザーの作成 ( Grant )

SQL コマンドを使ってデータの検索等々の命令をデータベース管理システムに問い合わせることを、クエリー ( Query ) を発行する、もしくはただ単にクエリーといいます。

そして、データベース管理システムが受け取ったクエリーを処理し、その結果をユーザーに返します。

すなわちデータベースを管理、運営する上で基本的な SQL コマンドの理解は必須です。

【 新規ユーザーの作成 】

この時点で MySQL に接続出来るユーザーは root しかありません。

そこで localhost からのみ接続出来る、全ての権限をもったスーパー ユーザーを新たに作成します。

まず MySQL に root ユーザーで接続。

C:¥>mysql -u root -p --port=63306 -b

次に使用するデータベース、ここではユーザー、ホストの情報を管理しているデータベース mysql を指定します。

mysql>use mysql

mysql>connect mysql としても OK

テーブルを操作するコマンドに対し、実行の許可、不許可の権限をユーザーに与える場合は grant コマンドを使います。ここではユーザー名を usagi 、パスワードを yukichan としました。

mysql>grant all privileges
->on *.*
->to 'usagi'@'localhost'
->identified by 'yukichan'
->with grant option;

上記画像のように Query OK と表示されれば、コマンドは正常に実行、処理されたことになります。

簡単ですが実行したコマンドについて説明します。

まず all privileges オプションを付けることで with grant option 以外の全ての権限をユーザーに与えています。

もし、あるデータベース、例えばデータベース hoge_db への接続のみ許可するのであれば、on *.* を on hoge_db.* に変えて下さい。

またデータベース hoge_db の領域にある、テーブル foo_table への接続に許可を与える場合は on hoge_db.foo_table とします。

to の次の文字列 'usagi'@'localhost' は localhost からのみ接続出来る usagi ユーザーを表しています。もし何処からでも接続出来る usagi ユーザーを作成したい場合には 'usagi'@'%' として下さい。特定の IP アドレスからのアクセスを許可したいときには 'usagi'@'IP Address' とします。

identified by ' 〜 ' は、' 〜 ' を識別する、つまりパスワード yukichan により usagi ユーザーを認識させます。

all 以外のオプションならびに with grant option については コチラ を参考に。

作成したユーザーの権限は show grants コマンドで確認することが出来ます。grants ( 複数形 ) となっていることに注意して下さい。

mysql>show grants for 'usagi'@'localhost';

もちろん select User,Host from user; コマンドでも確認しておきます。

grant コマンドの場合は、実行結果が即座に反映されるので flush privileges コマンドの実行は必要はありません。

mysql>quit を実行して一旦 MySQL から離脱。そして改めて usagi ユーザーで MySQL に接続します。

C:¥>mysql -u usagi -p --port=63306 -b

パスワードを要求されるので先程のパスワード yukichan をタイプ、エンターを押して下さい。

上記画像のように MySQL Monitor の起動を確認出来れば OK です。

【 コマンドの実行権限 】

実行権限には、all privileges の他にも、alter 、create 、delete 、drop 、file 、insert 、replication slave 、select 、update 、usage 等のオプションがあります。

使い方は簡単で、許可させたいコマンドの名称をカンマで区切り grant の後に列記するだけです。

例えば、ユーザー ponpokorin に select 、insert 、update および delete コマンドの実行を許すのであれば

mysql>grant select,insert,update,delete
->on *.*
->to 'ponpokorin'@'localhost';

注意点としては、一般ユーザに alter コマンドの実行許可を与えないことです。何故なら alter はテーブルそのものの構造を変える ( カラムに対する属性も含む ) ことが出来るコマンドだからです。

【 with grant option 】

with grant option が付与されたユーザーは grant コマンドそのものの実行が許可されます。言い方を換えれば、自分を含まないユーザーの実行権の制御が可能になります。

検証例として

usagi ユーザーのもとで with grant option を持たないユーザー fox を、故意 に作成します。

usagi ユーザーには with grant option が付与されているので grant コマンドが使えます。

mysql>grant all privileges
->on *.*
->to 'fox'@'localhost'
->identified by 'udon';

データベースを mysql に変更して fox ユーザーの有無を select User,Host from user コマンドで確認して下さい。

usagi ユーザーから離脱。

mysql>quit

今作成したばかりの fox ユーザーで再接続します。

C:¥>mysql -u fox -p -b --port=63306

fox ユーザーのもと新規ユーザー ponpokorin を grant コマンドで作成。

mysql>grant select,insert,delete
->on *.*
->to 'ponpokorin'@'localhost';

実行すると

アクセス権がない主旨のエラーが返されました。もちろん fox ユーザーに with grant option の権限を与えていれば、このようなエラーが返されることはありません。

また、実行権限を剥奪するときは revoke コマンドを使用します。

-----------------------------------------

匿名ユーザの復元

mysql>connect mysql;

mysql>grant usage
->on *.*
->to ''@'localhost';

を実行すれば、匿名ユーザーが復活します ( 笑 )

grant コマンドの実行に際し flush privileges コマンドを実行する必要はありません。即座に反映されます。

現在接続しているユーザーが判らなくなってしまったときは

mysql>select user(); もしくは

mysql>select current_user();

を実行して下さい。

☆ データベースならびにテーブルの作成

【 新規データベースの作成 】

create database コマンドを使って新規データベースを作成します。データベースの名称は sample_db としました。

まず usagi ユーザーで MySQL に接続して下さい。そして以下のコマンドを実行します。

mysql>create database sample_db;

またデータベースが作成されたかどうかの確認は、show databases コマンド ( 複数形に注意 ) を使います。

mysql>show databases;

【 新規テーブルの作成 】

データベースは、テーブルと呼ばれる領域にデータを登録格納していきます。

まず先程作ったデータベースを選択。

mysql>use sample_db;

次に、create table コマンドを用いて、新規テーブル sample_table を作成します。

次のコマンドを実行して下さい。

create table sample_table (
 ID smallint unsigned not null auto_increment,
 ArtistName varchar(40) not null,
 CD_No varchar(10),
 primary key (ID),
 unique key (ArtistName),
 unique key (CD_No)
);

実行後、Query OK と表示されればテーブルの作成処理は完了です。

テーブル作成時のオプションの詳細

この例では、ID 、ArtistName 、CD_No という 3 つのカラム ( 列 ) を用意しました。
赤線部分参照

ID カラムに対して、整数値の取り扱いが出来るよう smallint を記述。因みに smallint 型を指定した場合は -215 〜 215-1 という範囲の整数値を扱うことが出来ます。

また unsigned ( 符号なしにする ) オプションを付け加えることにより、扱える範囲を、正の整数値、0 〜 216-1 に限定してあります。

2 の ξ 乗の値は
mysql>select pow(2,ξ);
で求めることが出来ます。

not null は、NULL の登録を禁止する属性です。

ID カラムには他にも、数値が入力された際、値が自動的に + 1 づつ追加されるよう属性 auto_increment を付与しました。auto_increment 属性を設定した場合の実例は コチラ をご覧下さい。

auto_increment 属性を追加した場合、数値の重複を避けるため primary key の付与が必須であることも記しておきます。

primary Key については ココ を、unique Key に関しては コチラ を参考にして下さい。

カラムに整数値を取り扱わせるための記述が smallint であったのに対し、varchar 型は文字の取り扱いを可能にさせます。そして扱える文字の長さを Byte で表し括弧の中に記述します。例えば varchar(40) を設定したカラムは、最大 40 Byte までの可変長文字列が扱えるようになります。

扱う文字列の長さ ( Byte ) は、次のコマンドを実行することによって、大よその目安 ( 精度 ) が判ります。例えば文字列、" 可愛いウサギ " の場合は

mysql>select length('可愛いウサギ');

実行した結果は 12 。つまりこの文字列が 12 Byte であることが判ります。

もし扱わなければならない文字列の長さが不確定でかつ長い場合、varchar 型ではなく、text 型をオプションとして設定して下さい。

show tables ( 複数形 ) コマンドを実行してテーブルの形成を確認します。

さらに desc sample_table コマンドを実行して各カラムに対するオプション ( 属性 ) の設定を確認して下さい。

desc は describe の略です。また desc コマンドの代わりに show columns from コマンド、もしくは explain コマンドを実行しても同様の結果を得ることが出来ます。

【 NULL と Default 】

以下は desc sample_table コマンドの実行結果を拡大した画像です。

上記画像において ID カラムの Null の項目が空白、すなわち Null の記述が出来ない not null を示しています。また Default の項目が Null となっていることから入力がなければ Null を返すところですが、auto_increment 属性が設定されているためそれに従います。

ArtistName カラムの Null の項目も空白、これは ID 同様 Null の記述が不可。ただし Default の項目が ID カラムと違い空白となっています。つまり、何も入力がなければ空の文字列を返します。 コチラ も併せてご覧下さい。

カラム CD_No は Null の項目が Yes 、すなわち Null の記述が可能であり、Default の項目が Null となっていることから、何も入力されなければ NULL が挿入されます。 ココ を参考に。

Default 値を変更する場合は default < デフォルト値 > を付け加えます。

【 zerofill オプションの検証 】

ここでは、zerofill オプションを用いませんでしたが、例として示しておきます。

まず zerofill 属性のテスト用テーブルを作ります。

create table zerofill_test (
 Number int(6) zerofill
);

出来たテーブルにデータを登録。insert コマンドについては 後述

mysql>insert zerofill_test set
->Number=74;

テーブルの状態を select * from zerofill_test コマンドで確認します。

int(6) の括弧の中の数値を有効桁数もしくは精度といいます。

この例では、有効桁数 6 のところに 2 桁の数値を登録したため、残りの桁にゼロが充填 ( Fill ) されているのが上記画像から判ります。

【 フラグメンテーションの解消 】

MySQL は、用途に応じてストレージエンジンを使い分けることが出来ます。

もしテーブル作成時にエンジンの指定をしなければ、自動的に MyISAM エンジンが選択されます。

エンジン MyISAM は、固定長構造、可変長構造、圧縮テーブルのデータ構造から構成されます。特に可変長構造においては、新しいデータを挿入する際、すでにデーターが削除されている領域への再利用が難しいため、どうしてもデータのフラグメンテーションが発生します。

そこで、カラムに可変長のデータ型、varchar 、text を記述したテーブルには、フラグメンテーションを解消する以下のコマンドを定期的に実行する必要があります。

mysql>optimize table sample_db;

ストレージエンジンを指定 ( この例では InnoDB ) する場合は赤矢印部分を追記します。

create table table_product (
 ID_num int,
 product_name varchar(30),
 primary key (ID_num),
 unique key (product_name)
)
type = InnoDB; 

トランザクションのサポートやデータ整合性が必要とされるとき InnoDB エンジンを使います。後述

また次のコマンドを実行することで、既存のテーブルのストレージエンジンを知ることが出来ます。

mysql>show table status ¥G;

最後に、以下の 2 つのコマンドが等価であることを示しておきます。

create table table_product (
 ID_num int,
 product_name varchar(30),
 primary key (ID_num),
 unique key (product_name)
);

create table table_product (
 ID_num int primary key,
 product_name varchar(30) unique key
);

☆ データ操作のための基本コマンド

【 データの登録 】

データベースにデータがないのでは話になりません ( 笑 )

ここでは、データを一つ一つ登録する方法を二つに分けて説明します。

また後半では primary key ならびに unique key についても解説しました。

######## 第一の方法 ########

insert < TableName > set コマンドを使って、" カラム名 = データ " を個別に登録していきます。

データの値が純粋に数値以外はクォーテーションマークで囲って下さい。また " カラム名 = データ " の最後にカンマを付けます。

以下のコマンドを実行して二組のデーターを sample_table に登録します。

mysql>insert sample_table set
->ArtistName='Asuka', ← カンマを付けます
->CD_No='rc428';

mysql>insert sample_table set
->ArtistName='Aya',
->CD_No='ts237';

実行後、select * from sample_table コマンドでデータの登録の状況を確認します。

本来ならば

mysql>insert sample_table set
->ID=1, ← これを省略
->ArtistName='Asuka',
->CD_No='rc428';

とするべきところを、あえて、ID ナンバーを指定しませんでした。ところが実際には 1 から順番に ID が割り振られているのが上記画像から見てとれます。

これはカラム ID に auto_increment 属性が設定されているからに他なりません。

当たり前ですが auto_increment オプションは、整数型 ( int 、smallint 等 ) を有するカラムにしか設定することが出来ません。

また 1 つのテーブルに複数の設定は出来ません。

もし auto_increment 属性を設定しない状態で ID ナンバーを省略すると、ID には 0 が挿入されます。

これは Default の設定によるものです。下記画像参照

######## 第二の方法 ########

insert into < TableName > コマンドを使い全てのカラムの値を一組として設定、登録していく方法です。

mysql>insert into sample_table
->(ID, ArtistName, CD_No)
->values('','Sato','so716'); ← '' に注目

mysql>insert into sample_table
->(ID, ArtistName, CD_No)
->values(4,'Yumi','ax493');

実行の後、select * from sample_table コマンドで確認して下さい。

ここでも ID=3 を省略したにもかかわらず、自動で割り振られているのが判ります。

因みに、データを登録する際、第一の方法を用いるか、また第二の方法を使うかはケース バイ ケースです。

######## Primary Key について ########

ところで、カラム ID にワザと重複するデーターを登録するとどうなるでしょうか。

mysql>insert sample_table set
->ID=2, ← 2 が重複
->ArtistName='Sanae',
->CD_No='yj864';

エラーが返されました。これはカラム ID に primary key ( 主キー ) が設定されているからです。下記画像赤矢印

データベースが、その機能を果たすためには、一意にデータを識別出来なければなりません。

例えば " 名前 " の場合はどうでしょう。もし同姓同名のデータが存在した場合、一意に識別することは出来ません。

そこで、重複が起こらないカラムに対して primary key を設定することでデータの一意性を保ちます。

重複が起こりうるであろうカラム ( 名前や年齢、郵便番号等 ) に対して primary key を設定してはいけません。

auto_increment 属性 ( 赤線 ) と primary key が一心同体であることは、それぞれの機能を考えれば至極当たり前のことです。

また primary key を設定すると自動的に not null 属性が有効になります。ここでは、not null を明示的に付け加えているに過ぎません。

######## Unique Key について ########

unique key を設定することで重複が起こりうるであろうカラムに対しても重複を避けることが出来ます。

また、ひとつのテーブルに対して複数の設定が可能です。

この例では ArtistName カラムおよび CD_No カラムに unique key が設定してあります。上記画像の緑色の矢印

実際に、重複しているデータを登録してみると ......

<ArtistName が重複している場合>

mysql>insert sample_table set
->ID=1024,
->ArtistName='Sato', ← ArtistName が重複
->CD_No='po654';

<CD_No が重複している場合>

mysql>insert sample_table set
->ID=2897,
->ArtistName='Chie',
->CD_No='ax493'; ← CD_No が重複

共にエラーが返されました。

Unique Key は Primary Key と違い、属性 not null が自動的に有効になりません。すなわち Unique Key が設定され、かつ not null が設定されていないカラムは NULL を格納することが出来ます。

以下にその例を示します。

まず、not null を設定していないカラム CD_No に NULL を挿入してみると。

mysql>insert sample_table set
->ID=1728,
->ArtistName='Risa',
->CD_No=NULL;

NULL を登録することが出来ました。正常にクエリーが処理されています。

では、Unique Key が設定され、なおかつ not null が設定されているカラム ArtistName に対して NULL を挿入してみるとどうなるでしょう。

mysql>insert sample_table set
->ID=1729,
->ArtistName=NULL,
->CD_No=NULL;

ArtistName には NULL を格納出来ない主旨のエラーが返されました。

もう一度、下記画像 ( 再掲載 ) をご覧下さい。

ところで、NULL をクォーテーションマークで囲うと ..........

ArtistName='NULL',

NULL という名称で ArtistName に登録出来ます。つまり、本来の NULL としての認識ではなく NULL という文字列として認識されます。この違いについては留意しておく必要があります。

【 データの削除 】

まず最初に、削除するためのサンプル データを次のように追加登録して下さい。

mysql>insert sample_table set
->ID=5,
->ArtistName='真理',
->CD_No='kg542';

select * from コマンドで登録を確認。

今登録したばかりのデータを、delete コマンドを使って削除します。

削除対象となるデータは ID=5 。

そこで、条件式 where ID=5 を付与し実行します。

mysql>delete from sample_table
->where ID=5;

実行後

mysql>select * from sample_table;

コマンドで確認すると

ID=5 に該当するデータが削除されました。

もし、テーブル内のデータ全てを削除する場合は、条件式を付けずにそのまま実行して下さい。

mysql>delete from sample_table;

truncate コマンドを使っても全てのデータを削除することが出来ます。

mysql>truncate table sample_table;

ただし、delete コマンドと違って、削除したレコード数を返してくれません。0 rows となっていることに注視して下さい。

【 データのロード 】

これから紹介する方法は データーの登録 で述べた方法とは異なり、一度に大量のデータを読み込むことが可能です。

そこでまず、テーブル内にある全てのデータを削除しておきます。

mysql>delete from sample_table;

次に、以下のデータをコピペ、sample_data_01.txt として保存、C:¥mysql¥data¥sample_db にコピーします。

1,Asuka,rc428
2,Aya,ts237
3,Sato,so716
4,Yumi,ax493

格納したデータファイル sample_data_01.txt をデータベースに読み込ませる場合は以下のように実行します。

mysql>load data infile 'sample_data_01.txt'
->into table sample_table
->fields terminated by ','
->lines terminated by '\r\n';

fields terminated by と lines terminated by は、フィールドの終端を ',' ( カンマ ) により、また、行 ( line ) の終端は '\r\n' 、つまり改行によって認識させるオプションです。

データ ロードの練習用として address_aobaku.txt というファイルを作ってみました。ダウンロードは ココ から右クリックにてお願いします。

データを格納するテーブルは次のように作成して下さい。

mysql>create table address_test (
->zip int,
->hurigana text,
->address1 text,
->address2 text
->);

そして以下のコマンドでデータをロードします。

mysql>load data infile 'address_aobaku.txt'
->into table address_test
->fields terminated by ','
->lines terminated by '\r\n';

load data infile コマンドを実行する場合、ユーザーに file コマンドの実行権限が付与されている必要があります。

【 データの更新と置換 】

######## データの更新 ########

データの更新を行う場合 update コマンドを用います。

次のコマンドは、ArtistName='Aya' の CD_No の値を更新する例です。

mysql>update sample_table set
->CD_No='pp001'
->where ArtistName='Aya';

を実行すると

上記画像の赤矢印をご覧下さい。

また以下のようにしても同様の結果を得ることが出来ます。

mysql>update sample_table set
->CD_No='pp001'
->where ID=2;

今度は 2 つのカラム値を同時に更新する例です。対象となるカラムは ID と ArtistName 。

mysql>update sample_table set
->ID=2046,ArtistName='Minami'
->where CD_No='ax493';

無事、更新に成功しました。

######## データの置換 ########

ここでは、replace コマンドについて説明致します。

replace コマンドは、新しいデータと同じ値がテーブル内に含まれている場合、以前のレコードを削除した後、新しいデータを挿入します。

まず全てのカラムに対して重複する値が存在する場合について

実行したコマンドは次の通りです。

mysql>replace into sample_table
->(ID, ArtistName, CD_No)
->values(2046,'Asuka','pp001');

上記画像から、重複しているデータを含む全ての行 ( 矢印 ) が削除され新しい行に置き換わっていることに注目して下さい。

もし、ひとつでも重複しないデータが存在した場合には

mysql>replace into sample_table
->(ID, ArtistName, CD_No)
->values(2046,'Yumi','pp001');

重複するデータがひとつも存在しないとき、replace コマンドは inert コマンドと同じ挙動を呈します。実際に

mysql>replace into sample_table
->(ID, ArtistName, CD_No)
->values(5001,'Tomoko','qy382');

を実行すると

この結果は次のコマンドを実行した場合と明らかに同じです。

mysql>insert into sample_table
->(ID, ArtistName, CD_No)
->values(5001,'Tomoko','qy382');

Primary Key 、Unique Key が設定されていないテーブル上で replace コマンドを実行したらどうなるでしょうか。

置き換えにならず、そのまま登録されてしまいました。

すなわち、 Primary Key 、Unique Key が設定されていないテーブルに対して replace コマンドを実行した場合、全く意味のないことが判ります。

以下のコマンドを実行してテーブルを元の状態に戻しておいて下さい。

mysql>delete from sample_table;

mysql>load data infile 'sample_data_01.txt'
->into table sample_table
->fields terminated by ','
->lines terminated by '\r\n';

【 指定した列を表示 】

mysql>select ArtistName from sample_table;

次のようにしても

mysql>select elt(1,ArtistName,CD_No)
->from sample_table;

mysql>select elt(2,ArtistName,CD_No)
->from sample_table;

二つのカラムを同時に表示する場合は

mysql>select ArtistName,CD_No
->from sample_table;

このいい例は

mysql>use mysql;

mysql>select User,Host
->from user;

使用するデータベースを sample_db に戻して下さい。

mysql>use sample_db;

【 指定した行を表示 】

mysql>select * from sample_table
->where ArtistName='Asuka';

もちろん以下のようにしても同様の結果を得ることが出来ます。

mysql>select * from sample_table
->where ID=1;

mysql>select * from sample_table
->where CD_No='rc428';

【 指定した行以外を表示 】

mysql>select * from sample_table
->where ArtistName<>'Asuka';

もしくは

mysql>select * from sample_table
->where not(ArtistName='Asuka');

【 頭文字で検索 】

mysql>select * from sample_table
->where ArtistName like 'A%';

【 最後の文字で検索 】

mysql>select * from sample_table
->where ArtistName like '%o';

【 間の文字で検索 】

mysql>select * from sample_table
->where ArtistName like '%u%';

【 カラムの追加と削除 】

テーブルに Age ( 年齢 ) カラムを追加します。

mysql>alter table sample_table
->add Age tinyint;

人の年齢に対して 127 はあまりある数なので tinyint にあえて unsigned オプションを付けませんでした。

因みに整数型 tinyint がとる数値の範囲は、
-128=27 〜 27-1=127
unsigned オプションを付けた場合は
0 〜 28=256

select * from sample_table コマンドを実行してカラムが追加されたかどうかを確認します。

まだ値が入力されていないので NULL が返されています。

mysql>desc sample_table;

を実行、Age ( Field ) に対する Null の項目ならびに Default の項目をご覧下さい。下記画像赤線

NULL の項目が YES 、つまり NULL の入力が可能で、かつ、何も入力されなければ Default で NULL を返す設定になっているのが判ります。

そこで NULL 以外の値を返すよう Age カラムの Default 値を変更してみます。まず以下のコマンドで今作ったばかりの Age カラムを削除して下さい。

mysql>alter table sample_table
->drop Age;

そして新たに Age カラムを追加します。その際、オプションとして default 0 を付記します。

mysql>alter table sample_table
->add Age tinyint default 0;

select * from sample_table コマンドを実行すると。

NULL となっていた値が 0 と表示されるようになりました。

改めて desc sample_table を実行してみると。

Default の項目が 0 になっているのが判ります。

alter コマンドを使えば、表の外形およびカラムの属性を簡単に変えることが出来ます。くれぐれも一般ユーザーに対してこの権限を与えないようにして下さい。

【 個別にデータの値を挿入 】

mysql>update sample_table set
->Age=21
->where ID=1;

上記と同様に以下の値を挿入

mysql>update sample_table set
->Age=17
->where ID=2;

mysql>update sample_table set
->Age=19
->where ID=3;

mysql>update sample_table set
->Age=31
->where ID=4;

mysql>select * from sample_table; で確認すると

【 条件付きデータの抽出 】

mysql>select * from sample_table
->where ArtistName like '%a%'
->or
->Age > 19;

mysql>select * from sample_table
->where ArtistName like '%a%'
->and
->Age > 19;

mysql>select * from sample_table
->where ArtistName like '%a%'
->and
->Age >= 19;

mysql>select * from sample_table
->where ArtistName like '%a%'
->and
->Age <= 19;

mysql>select * from sample_table
->where ArtistName like '%a%'
->and
->Age <> 19;

mysql>select * from sample_table
->where Age
->between 19 and 25;

mysql>select * from sample_table limit 0,2;

mysql>select
->@max_age:=max(Age),
->@min_age:=min(Age)
->from sample_table;

mysql>select * from sample_table
->where Age=@max_age;

mysql>select * from sample_table
->where Age=@min_age;

【 正規表現を使ったデータの抽出 】

mysql>select * from sample_table
->where ArtistName regexp '^A|^Y';

mysql>select * from sample_table
->where ArtistName regexp 'o$;

mysql>select * from sample_table
->where ArtistName regexp '[i];

mysql>select * from sample_table
->where ArtistName regexp '[a-z]';

【 データの並び替え 】

mysql>select * from sample_table
->order by Age asc;

mysql>select * from sample_table
->order by Age desc;

【 行を縦に表示 】

行を縦に表示させるには、コマンドの最後に ¥G を付加します。例えば

mysql>select * from sample_table ¥G;

このオプションの有難みは

mysql>use mysql;

mysql>select * from user;

mysql>use sample_db;

mysql>show processlist;

また

mysql>show session variables;

等のコマンドで実感することが出来ます。

【 データベースとテーブルの削除 】

心の準備をもってデータベースを削除する方法は

C:¥>mysqladmin drop sample_db -u usagi -p
--port=63306 ( 一行で )

もちろん

mysql>drop database sample_db;

とすれば一瞬で削除されます。ただし全てのデータが無くなることを覚悟して下さい。失われたデーターは二度と戻ってきません。必ずバックアップを取るように心がけましょう。

【 データベースのバックアップ 】

コマンドによるデータベースのバックアップは以下のようにリダイレクト機能を使います。

C:¥>mysqldump -u root -p --port=63306
--opt sample_db
> C:¥sample_db_backup.sql

戻すときは ( 戻す前に sample_db フォルダの中身を空にすると判り易いです )

C:¥>mysql -u root -p --port=63306
sample_db < sample_db_backup.sql

しかしながら Windws である以上、最も簡単な全てのバックアップは、C:¥mysql の data フォルダそのものをマウスで右クリック、コピーする方法です。

もし自動的にデータのバックアップを取りたいのであれば、次のコーナーのようにレプリケーション サーバーを構築するか、以下の内容のバッチファイルを作ってタスクスケジューラに実行させます。

C:¥mysql¥bin¥mysqldump -u usagi
--password="yukichan" --port=63306
--all-databases > C:¥mysql_bak.sql

my.cnf ファイルのバックアップもお忘れなく。

☆ レプリケーション サーバーの構築

まず MySQL におけるレプリケーション サーバーの運用における注意点について説明致します。

原則、片側方向 ( Master → Slave ) に対してレプリケーションを行います。決してマルチマスター ( 双方向 ) にしようと思わないで下さい。トラブルのもとです。

Master との差分の更新は、Master サイドのバイナリ ログをチェックして行います。

また同期を成功させるため、双方の MySQL のヴァージョンを合わせて下さい。

######## Master 側の設定 ########

最初に Slave からの接続を許可するためのユーザー ( ここでは replica_01 ) を作成します。

grant コマンドを利用する際、オプションとして replication slave を使用します。下記赤文字

192.168.11.3 は Slave の IP アドレス。またパスワードを moumou としました。

mysql>grant replication slave
->on *.*
->to 'replica_01'@'192.168.11.3'
->identified by 'moumou'

C:¥mysql ( Master サイド ) にある data フォルダを、SFTP 等を使ってまるごと Slave 側に転送します。

######## Slave 側の設定 ########

MySQL サーバーを停止して下さい。

C:¥mysql ( Slave ) にある data フォルダを Master から転送した data フォルダに置き換えます。

次に Masterへ接続するための設定を行います。

ココ を参照してSlave 側にも my.cnf ファイルを作成して下さい。因みにポートはデフォルトの 3306 のままです。

my.cnf をエディターで開き、52 行目にある server-id の値を master と重複しない値に変更します。

ここでは id を 2 としました。

また、スーパーユーザー以外データベースの構造が変更出来ないよう read-only を追記。

master-host には Master の IP アドレス、すなわち 192.168.11.4 。

master-user は 先程 Master 側で作ったユーザー名、replica_01 を

master-password には Master 側で作ったユーザーのパスワード、moumou を入力。

master-port は 63306 ( Master 側のポート ) としました。

以下の画像は変更後の my.cnf です。

パラメータの設定が全て完了した後、以下のコマンドを実行して MySQL サーバーを起動して下さい。

C:¥>mysqld --defaults-file=C:¥mysql¥my.cnf

さらに別のコマンドプロンプトを起動、root ユーザーで MySQL に接続。

C:¥>mysql -u root -p

そして以下のコマンドを実行して Slave を開始します。

mysql>start slave;

######## 同期の確認 ########

Master 側で新規テーブルを作り、Slave 側で反映されることを確認します。

まず Master サイド。

mysql>create table replica_table (
->num int
->);

mysql>show tables;

mysql>insert replica_table set
->num=124;

mysql>select * from replica_table;

次に Slave サイド。

mysql>use sample_db;

select * from replica_table コマンドを実行して Master 側と同様のテーブルならびにデータが登録されていることを確認して下さい。

もし何らかの理由で同期が出来なくなった場合、以下のコマンドを実行。

mysql>show slave status ¥G;

おそらく原因は
Master_Log_File および Relay_Master_Log_File の不一致にあります。また、Last_error に何らかのクエリエラーが表示されているはずです。もちろん同期していないのですから Slave_SQL_Running は No 。

解決策は MySQL サーバーの起動の際、Last_error に記載されているエラーを逐次スキップしていくしかありません。

Slave 側の my.cnf の [mysqld] に

slave-skip-errors = 表示さている Last_errno の数字

を記述。MySQL サーバーを停止。そして

C:¥>mysqld --defaults-file=C:¥mysql¥my.cnf

で起動。MySQL にログインして

mysql>start slave;

mysql>show slave status ¥G;

Last_errno の数字を読み取り my.cnf に記述。そして再起動。

この作業を Last_error に何も表示されなくなるまで繰り返し行って下さい。

######## バイナリー ログの削除 ########

バイナリ ログを定期的に削除しないと C:¥mysql¥data ( Master ) の中に多数蓄積されていきます。

そこでバイナリー ログを削除する方法について説明致します。

Master 側。

まず、保有しているバイナリー ログを以下のコマンドで確認して下さい。

mysql>show master logs;

次にスレーブ側。

現在スレーブが参照しているバイナリー ログを確認します。

mysql>show slave status ¥G;

上記画像から現在スレーヴが参照しているマスター側のバイナリー ログが winxp-bin.003 であることが判ります。赤矢印

つまりwinxp-bin.001 〜 002 は不必要。そこで削除します。

Master サイド。

mysql>purge master logs
->to 'winxp-bin.003';

改めて

mysql>show master logs;

winxp-bin.001 、winxp-bin.002 が削除されたのが判ります。

念のため Master 側でデータを挿入して Slave 側で反映されるかどうかを確認して下さい。

また自動でバイナリーを削除する方法もあります。Master 側の my.cnf の [ mysqld ] に

set-variable = expire_logs_days= 14

を追記します。上記の 14 は 14 日という意味です。

ただし、Slave がリアルタイムで参照しているバイナリー ログも削除されかねないので、削除する日数 ( ローテーション ) は余裕をもって設定して下さい。

☆ テーブル間の結合

思案中

☆ トランザクション機能の検証

次のようなイメージのテーブルを sample_db に作成します。

# ID #       Name       #      Birthday       #
# 1  # Paul Dirac       # 1902-08-08 11:24:56 #
# 2  # Albert Einstein  # 1879-03-14 21:17:04 #

その際、以下のように InnoDB ストレージ エンジンを指定します。

create table physicist (
 ID tinyint unsigned auto_increment,
 Name varchar(30) not null,
 Birthday datetime,
 primary key (ID),
 unique key (Name)
)
type = InnoDB; ← InnoDB エンジンを指定

まず通常通り ID=1 に対するデータを挿入します。

mysql>insert physicist set
->Name='Paul Dirac',
->Birthday='1902-08-08 11:24:56';

登録を確認します。

mysql>select * from physicist;

ところで、もしうっかりして間違ったデータを挿入してしまった場合、どのように対処したらいいでしょう。

ID=2
Name='Max Einstein'
Birthday='2009-04-08 19:58:11'

因みに本来入力すべき正しいデータは
ID=2
Name='Albert Einstein'
Birthday='1879-03-14 21:17:04'

もちろん replace コマンドを実行してデータを置き換えることも可能ですが、ここではトランザクションという機能を使ってみることにします。

【 rollback と commit 】

まずトランザクション機能を有効にするためには最初に start transaction コマンドを実行しておく必要があります。

mysql>start transaction;

次に、間違ったデータを実際に挿入します。

mysql>insert physicist set
->ID=2,
->Name='Max Einstein',
->Birthday='2009-04-08 19:58:11';

挿入の確認。

mysql>select * from physicist;

トランザクション機能のひとつ、rollback コマンドを使い、今行った処理を無効にします。すなわち

mysql>rollback;

改めてテーブルの内容を確認してみると

mysql>select * from physicist;

登録される前の状態にリストアされていることが判ります。

今度は正しいデータを挿入。念のため間違ったデータの挿入を避けるためここでもトランザクションを有効にしておきます。

mysql>start transaction;

physicist テーブルに正しいデータを挿入します。

mysql>insert physicist set
->ID=2,
->Name='Albert Einstein',
->Birthday='1879-03-14 21:17:04';

挿入の確認をします。

mysql>select * from physicist;

挿入されたデータに間違いがなければ commit コマンドを用いて確定します。

mysql>commit;

もちろん commit を実行した後に、rollback しても意味がありません。因みにクエリエラーにはなりません。

ところで、このヴァージョン ( MySQL4.0.26 ) は、デフォルトで autocommit が有効ではないようです。

もし自動で commit されてしまうようであれば、トランザクションを開始する前に以下のコマンドを実行して autocommit を無効にして下さい。

mysql>set autocommit=0;

【 savepoint と rollback to savepoint 】

savepoint コマンドを実行することで rollback する位置を決めることが可能です。

実際に例を示すと

トランザクション機能を有効に

mysql>start transaction;

データを挿入します。

mysql>insert physicist set
->ID=3,
->Name='William Hamilton',
->Birthday='1805-08-04 07:05:37';

そして、以下のコマンドを実行しておいて下さい。

mysql>savepoint id_03;

今度は間違ったデータを挿入します。

mysql>insert physicist set
->ID=4,
->Name='Chome Chome',
->Birthday='2090-02-30 05:49:26';

さらにデータを挿入します。

mysql>insert physicist set
->ID=5,
->Name='Max Planck',
->Birthday='1858-04-23 14:41:29';

挿入したデータの確認をします。

mysql>select * from physicist;

それでは次のコマンドを実行して下さい。

mysql>rollback to savepoint id_03;

再度確認してみると

mysql>select * from physicist;

間違ったデータが挿入される前の状態に戻すことが出来ました。

確定するために

mysql>commit;

を実行して下さい。

【 Transaction 分散レベル 】

☆ Excel から MySQL に接続 ( ODBC )

ODBC とは Open Database Connectivity の略。

【 ODBC で接続するための準備 】

まず、スーパーユーザーで MySQL に接続して下さい。

C:¥>mysql -u usagi -p --port=63303 -b

新規にデータベースを作成します。

mysql>creaate database odbc_db;

データベース odbc_db を選択して下さい。

mysql>use odbc_db;

次にデータベース odbc_db に新規テーブルを作成。

mysql>create table odbc_table (
->zip int,
->hurigana text,
->address1 text,
->address2 text
->);

ODBC 経由で接続するユーザーを以下のように作成します。

mysql>grant select,insert,delete,update,file
->on *.*
->to 'odbc_user'@'localhost'
->identified by 'odbc_passwd';

もし、他のコンピュータから接続させる場合は 'localhost' の部分を書き換えます。詳しくは ココ をご覧下さい。

grant オプションに file 権限を付与した理由は load data infile コマンドを実行するためです。

root ユーザから切断後、改めて odbc_user で接続。

mysql>quit;

C:¥>mysql -u odbc_user -p --port=63306 -b

ココ から address_aobaku.txt ファイルをダウンロード、C:¥mysql¥data¥odbc_db 直下にコピーして下さい。

使用するデータベースを選択。

mysql>use odbc_db;

そして、address_aobaku.txt データ ファイルをテーブル odbc_table にロードします。

mysql>load data infile 'address_aobaku.txt'
->into table odbc_table
->fields terminated by ','
->lines terminated by '\r\n';

データのロードについては コチラ をご覧下さい。

【 MyODBC の設定 】

MyODBC のインストールは " Next " を何回かクリックして最後に " Finish " をクリックするだけ ( 途中、使用許諾の同意がありますので I accept ..... を選択します ) の簡単インストールです。

インストールしたのは MyODBC-standard-3.51.9-win の MSI 版。

まず、[ コントロール パネル ] → [ 管理ツール ] から データ ソース (ODBC) をダブルクリックして " ODBCデータソースアドミニストレータ " を起動して下さい。

データ ソースを定義するところから始めます。" ファイル DSN " タブをクリックして、" 追加 " をクリックします。

DSN ( データ ソース名 ) とは、データ ベースへアクセスする際に使用される論理的な名称です。

以下のように MySQL ODBC 3.51 Driver を選択 ( 反転 ) した後 " 次へ " をクリックして下さい。

ここでは、データ ソース ファイル名を MyODBC としました。入力後 " 次へ " をクリック。

そして、" 完了 " をクリックしてデータ ソース作成を終了します。

完了と同時に以下のウインドウが開くので、次のように空欄を埋めていきます。

Host/Server Name ( or IP ) : localhost
Database Name : odbc_db
User : odbc_user
Password : odbc_passwd
Port : 63306

" Test Data Source " をクリックして接続をテストします。以下のようなダイアログが表示されれば成功です。" OK " をクリックして下さい。

すると下記画像のようになるので、" OK " をクリック、" ODBCデータソースアドミニストレータ " を終了します。

因みに、C:¥Program Files¥Common Files¥ODBC
¥Data Sources に MyODBC.dsn というデータ ソースファイルが作られます。適当なテキストエディタで開いてみて下さい。

【 Excel から接続 】

Excel を起動して " データ " メニューから " 外部データの取り込み " → " データの取り込み " を選択します。

次にデータ ソースファイル MyODBC.dsn を選択した後 " 開く " をクリックして下さい。

データを返すセルの位置 ( 行と列 ) を絶対参照で指定します。デフォルトは =$A$1 。" OK " をクリック。

すると

☆ 管理コマンドと SQL 関数の応用

思案中

☆ GUI で MySQL を管理 SQL Manager

フリーの MySQL 管理ソフト SQL Manager 2007 Lite を試してみました。

簡単に MySQL を操作、管理出来ます。

今回、人柱となって頂いたのは、ご近所のネットカフェのパソコン。

SQL Manager をインストールする前に、MySQL をインストールして下さい。MySQL の設定は何も必要ありません。

【 インストール 】

コチラ から EMS SQL Manager 2007 Lite for MySQL 4.4.0.6 をダウンロードします。

ダウンロードした Zip ファイルを解凍します。

解凍したフォルダの中の MyManagerLiteSetup.exe をダブルクリックしてインストールを開始します。

最初に、インストールする際の言語を指定します。ここでは英語を選択。" Next " をクリック。

すると、下記画像のようにインストール ウィザードが開くので " Next " をクリックしてインストールを開始して下さい。

" Yes, I agree with ..... " にチェックを入れライセンスに同意します。 " Next " をクリック。

インストール先のフォルダーの指定画面です。デフォルトのまま " Next " をクリックします。

以下の画面もそのまま " Next " をクリック。

さらに " Next " をクリックして下さい。

インストールが始まります。

" Finish " をクリックしてウィザードを終了して下さい。

【 起動 】

インストール ウィザード終了後、暫くすると自動的に以下のウインドウが開きます。そのまま " OK " をクリックします。

" 30 days left " にはチェックを入れず " Close " をクリックして下さい。

Tip Of The Day というウインドウが現れるので、" Show tips at startup " のチェックを外し " Close " をクリックします。

以下は画像は、SQL Manager が最初に起動したときの画面です。

【 接続するための設定 】

コマンドプロンプト上で以下のコマンドを実行して MySQL を起動して下さい。

C:¥mysql¥bin>mysqld

次に MySQL Manager の " Database " メニューから " Create Database.... " を選択します。Database name はデフォルトのまま new_db 。" Next " をクリック。

接続するためのパラメータもデフォルトの状態で " Next " をクリックして下さい。ただし MySQL の設定がデフォルト状態の場合です。

" Finish " をクリックします。

Database Registration Info が開きます。よければ " OK " をクリック

すると左上に " new_db on localhost " が表示されます。

" new_db on localhost " を右クリックして " Connect to Database " を選択、new_db に接続して下さい。

下記画像のように表示されれば無事接続完了です。

【 新規データを登録 】

データベース new_db にデータの登録を行います。そのためにまずテーブルをデータベースに作成します。

以下のように Tables を右クリック、" New Table... " を選択して下さい。

すると以下のようにウインドウが変化します。

" Fields " タブをクリック。フィールド内を右クリックして " Insert Field " を選択します。

新規カラムの挿入とその属性を定義していきます。

Field name を ID_No に。 ID_No は整数、それも正の数値しか扱わないので Type は INTEGER のまま Unsigned にチェックを入れます。

INTEGER は int の別名です。

そして Autoincrement にチェック。Autoincrement にチェックを入れると自動的に Not null および Primary key にもチェックが入ります。" OK " をクリックして下さい。

新しいカラム ID_No が挿入されました。

同様に別のカラムを定義していきます。

全てのカラムの設定が終わったら " Compile " をクリックします。" Compile " をクリックしないと設定が有効になりません。

各カラムにデータを登録 ( 挿入 ) するために " Data " タブをクリックして下さい。

" + " 記号をクリックすると以下のように入力待ち画面になるので各フィールドに値を入力していきます。

入力終了後、" Compile " をクリックして下さい。

実際に作成、登録出来たかを確認してみましょう。

現在起動しているコマンドプロンプトとは別のコマンドプロンプトを起動して下さい。

MySQL に root ユーザー ( パスワードなし ) で接続します。

C:>mysql -u root -b

データベースを選択

mysql>use new_db;

show tables コマンドでテーブル名を確認します。

mysql>show tables;

入力したデータを表示してみます。

mysql>select * from table1;

SQL コマンドを使わず、GUI のみでデータベースを作成することが出来ました。

☆ ネットカフェから自宅の MySQL を管理

ネットカフェから自宅の MySQL サーバーにアクセスする方法について説明致します。

セキュリティのためにもポート番号は定期的に変更するようにして下さい。

まず自宅の MySQL にネットカフェからの接続用ユーザーを新規に作成します。

mysql>grant all privileges
->on *.*
->to 'netcafe'@'ネットカフェの IP アドレス'
->identified by '********';

もしデータベース sample_db のみに接続するのであれば on *.* を sample_db.* としてもいいかもしれません。

また権限を all privileges にしないとアクセス拒否されます。

今度はネットカフェのパソコンで起動している SQL Manager の設定です。

" Database " メニューから " Register Database.... " を選択して下さい。

接続するためのパラメータを下記のように入力します。

Host name : magical-sound.ddo.jp

Port : 63306

User name : netcafe

Password : ********

入力し終わったら " Next " をクリック。

Database name に sample_db と入力し、" Finish " をクリックして下さい。

以下画像のように Sample_db on ..... にマウスをあわせ右クリック、Connect to Database を選択します。

接続に成功すると下記画像のようになります。Table (1) を展開し sample_table をダブルクリックして下さい。

すると

" Data " タブをクリック

これでネットカフェから自宅の MySQL を管理運営することが出来ます。ただしセキュリティにはくれぐれもお気を付け下さい。



>> 地震情報 <<



貴方様が現在ご利用になられているブラウザは

Megalodon(http://megalodon.jp/)
Copyright (C) magical-sound All rights reserved.