(作成:2005/11)
さて何の因果かMySQLを使う必要が生じた今日此頃。この先ひょっとしたら使う事になるかも知んないのよね。まぁそれも別に良いんだけどさ。
何かね、聞いた話だとMySQLはとっても高速らしいですな。ちょっと期待。
設定
rootパスワード
インストールし立てだと root
にパスワードが掛かっとらんので誰でも居らっしゃーいな状態。
$ mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5 to server version: 4.0.24_Debian-10sarge1-log
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
流石にこれはイカンのでパスワード掛けましょ。 mysqladmin
コマンドで色々設定可能。
$ mysqladmin -u root password (パスワード入力)
$ mysql -u root
ERROR 1045: Access denied for user: 'root@localhost' (Using password: NO)
$ mysql -u root -p
Enter password:
...
mysql>
ユーザ/DB作成
まさか毎回rootでアクセスなんてしたか無いので、取り敢えず適当なユーザとDBでも作りませうか。ここでは以下のようなユーザ/DBを作成してみる。
DB | ユーザ |
---|---|
test | riyo |
まずはデータベース mysql
にログイン。
$ mysql -u root mysql -p
mysql> CREATE DATABASE test;
Query OK, 1 row affected (0.14 sec)
mysql> GRANT USAGE ON *.* TO riyo@localhost IDENTIFIED BY '(パスワード入力)';
Query OK, 0 rows affected (0.07 sec)
mysql> GRANT ALL ON test.* to riyo@localhost IDENTIFIED BY '(パスワード入力)';
Query OK, 0 rows affected (0.03 sec)
mysql>
サーバ/クライアント接続
せめてローカルネットワーク内からは自由に接続したいぞと。 まずはネットワーク周りの設定をば。
#### /etc/hosts.allow
mysqld: 192.168.1.0/255.255.255.0
#### /etc/mysql/my.cnf
#bind-address = 127.0.0.1
おもむろにMySQL再起動。
# /etc/init.d/mysql restart
さてローカルネットワーク上の他のマシンから繋がるかな?
$ mysql -h oni -u riyo test -p
Enter password:
...
mysql>
操作
テーブル作成
これだけじゃ面白くないんでテーブル作ってみましょ。取り敢えず今開発しようと考えてるアレをナニするプログラムの為のテーブルを例にして。 名前は stock
で、仕様は以下のようにしようか。
カラム名 | カラム型 | 条件 |
---|---|---|
id | 整数 | 非NULL、インデックス番号を登録、プライマリキー |
code | 4桁整数 | 非NULL |
name | 文字列 | 非NULL |
regist_date | 日時 | 非NULL |
last_date | 日付 | |
enable | Boolean | 非NULL、デフォルト値=false |
何に使うテーブルだろうねぇ。うふ。 さてこれを作成するには以下のような構文になりますよと。
mysql> CREATE TABLE stock (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, code SMALLINT(4) NOT NULL, name TEXT NOT NULL, regist_date DATETIME NOT NULL, last_date DATE, enable BOOL NOT NULL DEFAULT 0) TYPE = InnoDB;
Query OK, 0 rows affected (0.09 sec)
mysql> show columns from stock;
+-------------+-------------+------+-----+---------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------------------+----------------+
| id | int(11) | | PRI | NULL | auto_increment |
| code | smallint(4) | | | 0 | |
| name | text | | | | |
| regist_date | datetime | | | 0000-00-00 00:00:00 | |
| last_date | date | YES | | NULL | |
| enable | tinyint(1) | | | 0 | |
+-------------+-------------+------+-----+---------------------+----------------+
6 rows in set (0.00 sec)
mysql>
こんな感じ。
因みに他にも何やかやテーブル作るなら、ファイルにSQL文を書いて読込ませる方法のが管理が楽で良い。 --
で始まる文字列はコメントとして扱われる。
-- test.sql
...
-- アレとアレをナニするテーブル
DROP TABLE stock;
CREATE TABLE stock (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
code SMALLINT(4) NOT NULL,
name TEXT NOT NULL,
regist_date DATETIME NOT NULL,
last_date DATE,
enable BOOL NOT NULL DEFAULT 0
) TYPE = InnoDB;
-- アレを溜めとくテーブル
DROP TABLE stock_price;
CREATE TABLE stock_price (
...
読込ませるにはログインしたのち以下のコマンドで。
mysql> source equity.sql;
Query OK, 0 rows affected (0.01 sec)
Query OK, 0 rows affected (0.01 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.08 sec)
mysql> show tables from equity;
+------------------+
| Tables_in_equity |
+------------------+
| stock |
| stock_price |
+------------------+
2 rows in set (0.01 sec)
mysql>