連載第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のインストールについては、連載第1回目を参考にしてください。正常にインストールが完了していれば、MySQLの各コマンドが使用できます。それでは、動作確認として以下のコマンドを入力してみましょう。
$ mysqlshow -u root |
同じように表示されましたでしょうか?
「-u」オプションでrootユーザーを指定します。MySQLの初期設定では、localhostからのrootユーザー接続にパスワードが設けられていません(注)。
注:デフォルトでは、リモートホストからの接続は制限されています。しかし、localhostからのrootユーザー接続にはパスワードが設けられていません。
rootユーザーのパスワードを設定するには、以下のコマンドを実行します。
# mysqladmin -u root password 新しいパスワード |
MySQLでは、同一サーバ内に複数のデータベースを作成します(Oracleのインスタンスのようなイメージ)。さらに、データベースの中にテーブルを作成して利用します。なお、OSで用意されるユーザーとは別に、MySQLでは専用の権限情報を使用します。そのため、OS上にアカウントを持っていても、MySQLで正しく権限設定をしていなければ使用できません。
MySQLの基本操作については、MySQL3.23を基にした「快速MySQLでデータベースアプリ!第2回『mysqlコマンドでデータベース操作』」を参考にしてください(注)。
注:MySQL5.0での変更/追加点については後述します。
ここでは、mysqlクライアントの実行方法を紹介します。
「mysql」コマンドに「-u」でユーザー名を指定します。また、パスワードの入力を必要とする場合は「-p」を指定します。そして、オプションに続いてデータベース名を指定します。
mysqlコマンドを実行すると「mysql>」プロンプトが表示されます(クエリー入力モードに入ります)。
# mysql -u root -p test |
テーブルを作成するには、CREATEクエリーを使用します。「test」データベースの中に「test_table」テーブルを作成する場合は、以下の「CREATE TABLE」クエリーを実行します。
mysql> CREATE TABLE `test_table` ( |
実行したら、テーブルが正しく作成されているかどうかを「SHOW TABLES」クエリーで確認します。
mysql> SHOW TABLES; |
データの挿入には、「INSERT」クエリーを使用します。
mysql> INSERT INTO test_table value (1,'1st'); |
mysql> INSERT INTO test_table value (2,'2nd'); |
データを抽出するには、「SELECT」クエリーを使用します。
mysql> SELECT * FROM test_table; |
また、条件付きでデータの抽出を行いたい場合は、「WHERE句」を付けます。
mysql> SELECT * FROM test_table WHERE id = '2'; |
データを更新するには、「UPDATE」クエリーを使用します。先ほど紹介したWHERE句を用いることで、特定の行だけを更新できます。
mysql> UPDATE test_table set memo='2nd+' WHERE id = '2'; |
mysql> SELECT * FROM test_table WHERE id = '2'; |
ここまでは、便宜上「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 'ユーザー名'@'クライアントのアドレス'; |
Copyright © ITmedia, Inc. All Rights Reserved.