連載
» 2007年03月26日 00時00分 公開

今から始める MySQL入門(4):MySQLの基礎を学ぼう [準備編] (1/3)

[鶴長鎮一,@IT]

 連載第3回目では、PHPのサンプルコードを実際に見ながらフォームデータの受け渡しやファイル操作について解説しました。

 今回は、本連載の主役「MySQL」の登場です! 次回以降のサンプル開発で必要となるMySQLの基礎知識とその下準備について解説します。基礎の習得と下準備をしっかり行い、次回以降で本格的に着手する「簡易オンラインストア」の開発に備えましょう。

関連リンク:

連載 快速MySQLでデータベースアプリ!

http://www.atmarkit.co.jp/flinux/index/indexfiles/mysqlindex.html

連載 今から始める MySQL入門

http://www.atmarkit.co.jp/flinux/index/indexfiles/mysql5index.html


MySQLの導入と動作確認

 ここでは、MySQLによるデータの参照や登録方法について解説する前に、MySQLの基礎知識と操作方法を中心に解説します。

 MySQLのインストールについては、連載第1回目を参考にしてください。正常にインストールが完了していれば、MySQLの各コマンドが使用できます。それでは、動作確認として以下のコマンドを入力してみましょう。

$ mysqlshow -u root
+--------------------+
|     Databases      |
+--------------------+
| information_schema |
| mysql              |
| test               |
+--------------------+

 同じように表示されましたでしょうか?

 「-u」オプションでrootユーザーを指定します。MySQLの初期設定では、localhostからのrootユーザー接続にパスワードが設けられていません(注)

注:デフォルトでは、リモートホストからの接続は制限されています。しかし、localhostからのrootユーザー接続にはパスワードが設けられていません。


 rootユーザーのパスワードを設定するには、以下のコマンドを実行します。

# mysqladmin -u root password 新しいパスワード

データベース、テーブル、ユーザー権限

 MySQLでは、同一サーバ内に複数のデータベースを作成します(Oracleのインスタンスのようなイメージ)。さらに、データベースの中にテーブルを作成して利用します。なお、OSで用意されるユーザーとは別に、MySQLでは専用の権限情報を使用します。そのため、OS上にアカウントを持っていても、MySQLで正しく権限設定をしていなければ使用できません。

図1 MySQLサーバの概念図 図1 MySQLサーバの概念図
図2 テーブルの概念図 図2 テーブルの概念図

MySQLの基本操作

 MySQLの基本操作については、MySQL3.23を基にした「快速MySQLでデータベースアプリ!第2回『mysqlコマンドでデータベース操作』」を参考にしてください(注)

注:MySQL5.0での変更/追加点については後述します。


mysqlクライアントの実行

 ここでは、mysqlクライアントの実行方法を紹介します。

 「mysql」コマンドに「-u」でユーザー名を指定します。また、パスワードの入力を必要とする場合は「-p」を指定します。そして、オプションに続いてデータベース名を指定します。

 mysqlコマンドを実行すると「mysql>」プロンプトが表示されます(クエリー入力モードに入ります)。

# mysql -u root -p test
Enter password: ←パスワードを入力
(省略)
mysql> ←クエリーの入力

テーブルの作成

 テーブルを作成するには、CREATEクエリーを使用します。「test」データベースの中に「test_table」テーブルを作成する場合は、以下の「CREATE TABLE」クエリーを実行します。

mysql> CREATE TABLE `test_table` (
    ->   `id` int(10) default NULL,
    ->   `memo` char(240) default NULL
    -> );

 実行したら、テーブルが正しく作成されているかどうかを「SHOW TABLES」クエリーで確認します。

mysql> SHOW TABLES;
+----------------+
| Tables_in_test |
+----------------+
| test_table     |
+----------------+

データの挿入

 データの挿入には、「INSERT」クエリーを使用します。

mysql> INSERT INTO test_table value (1,'1st');

mysql> INSERT INTO test_table value (2,'2nd');

データの抽出

 データを抽出するには、「SELECT」クエリーを使用します。

mysql> SELECT * FROM test_table;
+------+------+
| id   | memo |
+------+------+
|    1 | 1st  |
|    2 | 2nd  |
+------+------+

 また、条件付きでデータの抽出を行いたい場合は、「WHERE句」を付けます。

mysql> SELECT * FROM test_table WHERE id = '2';
+------+------+
| id   | memo |
+------+------+
|    2 | 2nd  |
+------+------+

データの更新

 データを更新するには、「UPDATE」クエリーを使用します。先ほど紹介したWHERE句を用いることで、特定の行だけを更新できます。

mysql> UPDATE test_table set memo='2nd+' WHERE id = '2';

mysql> SELECT * FROM test_table WHERE id = '2';
+------+------+
| id   | memo |
+------+------+
|    2 | 2nd+ |
+------+------+

ユーザー権限の設定

 ここまでは、便宜上「root」ユーザーで各種操作を行いましたが、rootユーザーに与えられている権限を使用し続けることは大変危険です。実際の利用では、専用のユーザーを作成して使用するようにします。

 以下のようにすると、testデータベースの全テーブルにSELECT/INSERT/UPDATE/DELETE権限を与えることができます。

mysql> GRANT SELECT, INSERT, UPDATE, DELETE ON test.* TO 'ユーザー名'@'クライアントのアドレス' IDENTIFIED BY 'パスワード';

 クライアントのアドレスを限定しない場合には「%」を指定します。なお、MySQLでは同じユーザー名であっても、ローカルからの接続とリモートからの接続とでは、別々のユーザーとして認識されます。ローカルホストからの接続を明示的に設定するには、以下のように「GRANT」クエリーを実行する必要があります。

mysql> GRANT SELECT, INSERT, UPDATE, DELETE ON test.* TO 'ユーザー名'@'localhost' IDENTIFIED BY 'パスワード';

 権限が不要になった際にユーザー権限をはく奪する場合は、「REVOKE」クエリーを実行します。そして、「DROP USER」クエリーでユーザーを削除します。

mysql> REVOKE SELECT, INSERT, UPDATE, DELETE ON test.* FROM 'ユーザー名'@'クライアントのアドレス';
mysql> DROP USER 'ユーザー名'@'クライアントのアドレス';


       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。