ここでは、MySQL でデータベースを作成し、テーブルにデータを追加するまでの手順を簡単な例をとおして解説します。新規データベースユーザーの登録やデータベースの作成等、MySQL に関する詳細な情報は、MySQL AB で公開されているドキュメントを参照してください。
Turbolinux 11 Server では、初期状態では root ユーザーがデータベースの管理者となり、このユーザー以外の Linux ユーザーは、インストール直後の MySQL を使用することはできません。よって、Linux システムにアカウントを持つユーザーが MySQL を使用できるように、必要に応じてデータベースユーザーを登録する必要があります。
管理権限をもつデータベースユーザーを登録するためには、まずは root ユーザーでデータベースに接続後、次のように GRANT 文を実行します。admin_userには作成するユーザー名を、new_passにはユーザーのパスワードを入力します。リモートホストからの接続およびローカルホストからの接続を許可するには次のように 2 つの GRANT 文を実行する必要があります。他にユーザー管理用のシステムテーブルを直接変更する方法もありますが、GRANT 文が推奨されています。
mysql> GRANT ALL PRIVILEGES ON *.* TO admin_user@"%"
IDENTIFIED BY 'nwe_pass' WITH GRANT OPTION;
mysql> GRANT ALL PRIVILEGES ON *.* TO admin_user@"localhost"
IDENTIFIED BY 'nwe_pass' WITH GRANT OPTION; |
それぞれ実行後に次のように表示されれば成功です。
Query OK, 0 rows affected (0.00 sec) |
データベースユーザーを作成するには CREATE USER 文を使用します。root ユーザーでデータベースに接続後、次のように実行します。例は taro ユーザーを作成しています。@"% はすべてのホストを表します。省略した場合にもすべてのホストに対する指定となります。
mysql> CREATE USER taro@"%"; |
ローカルホストからのアクセスも許可するにはさらに次を実行します。
mysql> CREATE USER taro@localhost; |
すべてのデータベースに対して閲覧と更新( SELSECT、INSERT、UPDATE、DELETE)権限を付与するには次のように GRANT 文を実行します。
mysql> GRANT CREATE,SELECT,INSERT,UPDATE,DELETE ON *.*
TO taro@localhost IDENTIFIED BY 'password';
mysql> GRANT CREATE,SELECT,INSERT,UPDATE,DELETE ON *.*
TO taro@"%" IDENTIFIED BY 'password' ; |
これで、作成したデータベースユーザーで、MySQL を利用できるようになります。
なお、登録したデータベースユーザーを削除するには、DROP USER 文で行います。
mysql> DROP USER taro@"%"; Query OK, 0 rows affected (0.00 sec) mysql> DROP USER taro@localhost; Query OK, 0 rows affected (0.00 sec) |
データベースを作成するには、CREATE DATABASE 文を実行します。データベースの CREATE 権限を持つユーザーだけが、データベースを作成できることに注意してください。root ユーザーでデータベースに接続後、以下のように実行してください。引数で作成するデータベース名(例は testdb)を指定します。また、データベースで日本語を扱うために使用する文字コードを指定することを推奨します。以下の例の“ujis”はデフォルトの文字コードが日本語 EUC のデータベースを作成しています。
CREATE DATABASE testdb CHARACTER SET ujis; |
データベースを作成するとデータベース格納領域であるディレクトリ以下にデータベース名のディレクトリが作成され、db.opt ファイルが作成されます。このファイルにはデータベースに関する定義が格納されています。データベースの属性変更は、ALTER DATABASE 文で行えます。
これにより、testdb という日本語を EUC で管理するデータベースが作成されます。次に作成したデータベースへテーブルを作成し、データを挿入します。
MySQL では、mysql というクライアントアプリケーション(データベース操作ツール)が標準で付属されています。作成したデータベースへ接続し、SQL文の実行とその結果を表示することが可能です。mysql の詳細な使用方法については、MySQL AB で公開されているドキュメントを参照してください。
作成した testdb データベースへ接続するには、次のコマンドを実行します。この例では、ローカルホストからデータベースユーザーである taro を使用して、testdb データベースに接続します。リモートホストから接続する場合はデータベースが存在するホストを -hhostname オプションで指定します。
$ mysql -utaro testdb |
-u オプションを指定しない場合は、root ユーザーとしてデータベースへの接続を試みます。また、データベース名を指定しなかった場合は、test データベースへ接続を試みます。パスワードを設定している場合には “-ppassword”または“-p”オプションの指定が必要です。指定しないときエラーが表示されデータベースに接続できません。“-p” オプションのみを指定した場合、次のようにパスワード入力を要求されます。
Enter password: |
![]() | 標準設定では、データベースユーザーのパスワードは設定されていません。しかし、実際の運用ではパスワードによるユーザー認証を行うことを推奨します。以下は taro ユーザーに対して password というパスワードを設定しています。
次回のデータベース接続は以下のように実行します。
|
接続すると以下のように、プロンプトが mysql> になります。これが、SQL 文を実行するためのコマンドプロンプトとなります。
$ mysql -utaro testdb -ppassword Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 11 Server version: 5.0.45 Source distribution Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> |
SQL 文以外にも、mysql へ命令を与えることができます。先頭がバックスラッシュ \ の文は SQL 文ではなく、mysql に対する命令と解釈されます。例えば、\q は mysql を終了するための命令です。また、\h は、mysql へ与えることができる命令のヘルプを表示します。
mysqlを終了するには、次のコマンドを実行します。
mysql> \q |
以下は、mysql で使用できる代表的なコマンドです。
表 26-2. psql 主なコマンド
| コマンド | 説明 |
|---|---|
| \h | ヘルプを表示します。 |
| \r | データベースへ再接続します。\r db_name host と指定します。host にはホスト名を指定しますが、省略時はローカルホストとなります。 |
| \G | SQL 文に続けて \G を入力するとサーバーに渡され SQL が実行されます。実行結果は垂直方向に表示されます。 |
| \g | SQL 文に続けて \g を入力するとサーバーに渡され SQL が実行されます。“;”と同義です。 |
| \q | mysql を終了します。 |
| \. | 他のファイルを取り込みます。一連のSQL文を、事前にファイルに記述しておき、\. filename と実行することで、一度に SQL文を実行することができます。 |
| \s | 接続中のデータベースやユーザーなどをはじめ多くのサーバーに関する情報を表示します。 |
| \! | “\! ”に続けて Linux のシェルコマンドを入力し[Enter]キーを押すと実行します。 |
| \T | すべての情報をファイルに出力します。\T filename と実行することで、カレントディレクトリの filename に実行コマンドや実行結果がすべて出力されます。 |
| \u | 接続データベースを変更します。\u db_name と指定します。 |
| help | “help SQL”と実行して SQL の構文に関するヘルプを表示できます。 |
![]() | help で表示したい SQL 構文のトピックスが不明な場合は、“help contents”と実行して Account Management や Administration などコンテンツのカテゴリを一覧表示することができます。さらに、ここで表示されたカテゴリからコンテンツ名を指定して“help contents_name”と実行して SQL 構文のトピックス名を確認できます。 |
testdb データベースにデータを格納するためのテーブルを作成します。ここでは、例として以下の簡単なテーブルを作成します。テーブルの作成はデータベースに対する CREATE 権限のあるユーザーで実行します。
表 26-3. meibo テーブルの仕様
| カラム名 | データ型 | 説明 |
|---|---|---|
| name | varchar(30) | 半角30文字までの可変長文字列 |
| age | integer | 整数 |
| address | varchar(80) | 半角80文字までの可変長文字列 |
meibo デーブルへ格納するデータは以下の通りです。
表 26-4. meibo テーブルのデータ
| name | age | address |
|---|---|---|
| Taro Yamada | 27 | 1-2-x Shibuya-ku Tokyo |
| Hanako Tanaka | 18 | 3-4-x Yokohama-shi Kanagawa |
| Ichiro Suzuki | 35 | 5-6-x Saitama-shi Saitama |
テーブルの作成は SQLの CREATE TABLE 文を使用します。SQL 文は、最後はセミコロン ; で終了します。その間は改行しても構いません。
mysql> CREATE TABLE meibo (name varchar(30),
-> age integer,
-> address varchar(80));
Query OK, 0 rows affected (0.00 sec)age integer, address varchar(80));
mysql> |
新規作成した meibo テーブルにデータを追加します。データの追加は SQL 文の INSERT INTO を使用します。
mysql> INSERT INTO meibo VALUES
-> ('Taro Yamada',27,'1-2-x Shibuya-ku Tokyo');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO meibo VALUES
-> ('Hanako Tanaka',18,'3-4-x Yokohama-shi Kanagawa');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO meibo VALUES
-> ('Ichiro Suzuki',35,'5-6-x Saitama-shi Saitama');
Query OK, 1 row affected (0.00 sec)
mysql> |
テーブルに追加したデータの表示は SQL の SELECT 文を使用します。
mysql> SELECT * from meibo; +---------------+------+-----------------------------+ | name | age | address | +---------------+------+-----------------------------+ | Taro Yamada | 27 | 1-2-x Shibuya-ku Tokyo | | Hanako Tanaka | 18 | 3-4-x Yokohama-shi Kanagawa | | Ichiro Suzuki | 35 | 5-6-x Saitama-shi Saitama | +---------------+------+-----------------------------+ 3 rows in set (0.00 sec) |
作成したテーブルを削除したい場合は、SQL 文の DROP TABLE を使用します。
mysql> DROP TABLE meibo; Query OK, 0 rows affected (0.00 sec) mysql> |
これで、meibo テーブルが削除されます。なお、当然のことながらテーブルに追加したデータも削除されます。