データベースサーバ(MySQL)

■ FC2~FC6 / Fedora7 / Fedora8 / Fedora9
MySQL は高速性と堅牢性を追及したマルチユーザ・マルチスレッドのSQLデータベースで、 世界で最も人気のあるフリーのリレーショナルデータベースサーバーです。 Movable TypeとかNucleus等を利用する場合は各種データをMySQLデータベースに保存するようになっていますので、ここではMySQLを使ったデータベースサーバを構築します。
■MySQLインストール

mysql-serverをインストールします
[root@linux ~]# yum -y install mysql-server

■MySQL起動

MySQLの起動
[root@linux ~]# /etc/init.d/mysqld start
MySQL データベースを初期化中:  Installing all prepared tables
Fill help tables
To start mysqld at boot time you have to copy support-files/mysql.server
to the right place for your system
PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:
/usr/bin/mysqladmin -u root password 'new-password'
/usr/bin/mysqladmin -u root -h linux.yokensaka.com password 'new-password'
See the manual for more instructions.
You can start the MySQL daemon with:
cd /usr ; /usr/bin/mysqld_safe &
You can test the MySQL daemon with the benchmarks in the 'sql-bench' directory:
cd sql-bench ; perl run-all-tests
Please report any problems with the /usr/bin/mysqlbug script!
The latest information about MySQL is available on the web at
http://www.mysql.com
Support MySQL by buying support/licenses at http://shop.mysql.com
[  OK  ]
MySQL を起動中:                                            [  OK  ]

■MySQL自動起動設定

MySQLの自動起動設定
[root@linux ~]# chkconfig mysqld on
MySQLの自動起動設定確認
[root@linux ~]# chkconfig --list mysqld
mysqld          0:off   1:off   2:on    3:on    4:on    5:on    6:off
           ランレベル2~5がオンの状態であることを確認

■rootユーザへのパスワード設定
MySQLのrootユーザにはデフォルトではパスワードが設定されていないため、安全のためにパスワードを設定します。

MySQLサーバーへrootユーザでログインします
[root@linux ~]# mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2 to server version: 5.0.22
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
登録済ユーザ及びパスワードの確認をします
mysql> select user,host,password from mysql.user;
+------+---------------------+----------+
| user | host                | password |
+------+---------------------+----------+
| root | localhost           |          | ← パスワードが設定されていない
| root | linux.yokensaka.com |          | ← パスワードが設定されていない
|      | linux.yokensaka.com |          |
|      | localhost           |          |
+------+---------------------+----------+
4 rows in set (0.00 sec)
localhostのrootユーザにパスワードを設定します
mysql> set password for root@localhost=password('パスワード');
Query OK, 0 rows affected (0.00 sec)
linux.yokensaka.comのrootユーザにパスワードを設定します
mysql> set password for root@linux.yokensaka.com=password('パスワード');
Query OK, 0 rows affected (0.00 sec)
mysql> exit ← いったんログアウトします
Bye
rootユーザでパスワードありでMySQLサーバーへログインします
[root@linux ~]# mysql -u root -pパスワード
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3 to server version: 5.0.22
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
登録済ユーザ及びパスワードの確認をします
mysql> select user,host,password from mysql.user;
+------+---------------------+------------------+
| user | host                | password         |
+------+---------------------+------------------+
| root | localhost           | 1fd201a955bab306 | ← パスワードが設定された
| root | linux.yokensaka.com | 1e6055bd75163e03 | ← パスワードが設定された
|      | linux.yokensaka.com |                  |
|      | localhost           |                  |
+------+---------------------+------------------+
4 rows in set (0.00 sec)
mysql> exit ← いったんログアウトします
Bye

■匿名ユーザの削除
MySQLには匿名ユーザがデフォルトで登録されており、ユーザ名とパスワードなしでMySQLサーバーへログインできてしまうため、安全のためにこのユーザを削除します。

rootユーザでパスワードありでMySQLサーバーへログインします
[root@linux ~]# mysql -u root -pパスワード
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7 to server version: 5.0.22
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
登録ユーザの確認をします
mysql> select user,host from mysql.user;
+------+---------------------+
| user | host                |
+------+---------------------+
|      | linux.yokensaka.com |
| root | linux.yokensaka.com |
|      | localhost           |
| root | localhost           |
+------+---------------------+
4 rows in set (0.00 sec)
匿名ユーザを削除します
mysql> delete from mysql.user where user='';
Query OK, 2 rows affected (0.00 sec)
匿名ユーザが削除されてるか確認します
mysql> select user,host from mysql.user;
+------+---------------------+
| user | host                |
+------+---------------------+
| root | linux.yokensaka.com |
| root | localhost           |
+------+---------------------+
2 rows in set (0.00 sec)
mysql> exit ← いったんログアウトします
Bye
匿名ユーザでMySQLサーバーへログインできないことを確認します
[root@linux ~]# mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

■testデータベースの削除
MySQLにはデフォルトでtestという空のデータベースが登録されていますが、不要のため、このデータベースを削除します。

rootユーザでMySQLサーバーへログインします
[root@linux ~]# mysql -u root -pパスワード
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9 to server version: 5.0.22
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
登録データベースを確認します
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| test               |
+--------------------+
3 rows in set (0.00 sec)
testデータベースを削除します
mysql> drop database test;
Query OK, 0 rows affected (0.01 sec)
testデータベースが削除されてるか確認します
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
+--------------------+
2 rows in set (0.00 sec)
mysql> exit ← ログアウト
Bye

■MySQL確認

rootでMySQLサーバーへログイン
[root@linux ~]# mysql -u root -pパスワード
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 10 to server version: 5.0.22
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
takaデータベースへの全てのアクセス権限を持った、新規ユーザtakaを登録
mysql> grant all privileges on taka.* to taka@localhost identified by 'パスワード';
Query OK, 0 rows affected (0.00 sec)
mysql> select user from mysql.user where user='taka'; ← takaユーザ登録確認
+--------+
| user   |
+--------+
| taka   |
+--------+
1 row in set (0.00 sec)
mysql> exit ← ログアウト
Bye
takaユーザでMySQLサーバーへログイン
[root@linux ~]# mysql -u taka -pパスワード
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 11 to server version: 5.0.22
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> create database taka; ← takaデータベース作成
Query OK, 1 row affected (0.00 sec)
mysql> show databases; ← データベース作成確認
+--------------------+
| Database           |
+--------------------+
| information_schema |
| taka               |
+--------------------+
2 rows in set (0.00 sec)
mysql> use taka ← takaデータベースへ接続
Database changed
mysql> create table taka(num int, name varchar(50)); ← takaテーブル作成
Query OK, 0 rows affected (0.01 sec)
mysql> show tables; ← テーブル作成確認
+----------------+
| Tables_in_test |
+----------------+
| taka           |
+----------------+
1 row in set (0.00 sec)
mysql> insert into taka values(1,'データAB'); ← takaテーブルへデータ登録
Query OK, 1 row affected (0.00 sec)
mysql> select * from taka; ← データ登録確認
+------+----------+
| num  | name     |
+------+----------+
|    1 | データAB |
+------+----------+
1 row in set (0.01 sec)
mysql> update taka set name='データAB'; ← takaテーブル内データ更新
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 0  Warnings: 0
mysql> select * from taka; ← データ更新確認
+------+----------+
| num  | name     |
+------+----------+
|    1 | データAB |
+------+----------+
1 row in set (0.00 sec)
mysql> delete from taka where num=1; ← takaテーブル内データ削除
Query OK, 1 row affected (0.02 sec)
mysql> select * from taka; ← データ削除確認
Empty set (0.00 sec)
mysql> drop table taka; ← testテーブル削除
Query OK, 0 rows affected (0.00 sec)
mysql> show tables; ← テーブル削除確認
Empty set (0.00 sec)
mysql> drop database taka; ← データベースtaka削除
Query OK, 0 rows affected (0.00 sec)
mysql> show databases; ← データベース削除確認
+--------------------+
| Database           |
+--------------------+
| information_schema |
+--------------------+
1 row in set (0.00 sec)
mysql> exit ← ログアウト
Bye
rootでMySQLサーバーへログイン
[root@linux ~]# mysql -u root -pパスワード
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 41 to server version: 5.0.22
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
takaユーザから全てのデータベースへのアクセス権限を剥奪
mysql> revoke all privileges on *.* from taka@localhost;
Query OK, 0 rows affected (0.00 sec)
takaユーザ削除
mysql> delete from mysql.user where user='taka' and host='localhost';
Query OK, 1 row affected (0.03 sec)
takaユーザ削除確認
mysql> select user from mysql.user where user='taka';
Empty set (0.00 sec)
mysql> flush privileges; ← takaユーザの削除をMySQLサーバーへ反映
Query OK, 0 rows affected (0.02 sec)
mysql> exit ← ログアウト
Bye

■Movable Typeの初期設定
Movable Typeのブログデータを保存するデータベースの初期設定を行います。

rootでMySQLサーバーへログイン
[root@linux ~]# mysql -u root -pパスワード
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 41 to server version: 5.0.22
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
「mt」というデータベースを作成
mysql> create database mt;
Query OK, 1 row affected (0.01 sec)
管理DBをデフォルト(管理をカレント)
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
「mt」というデータベースにログインするユーザー名とパスワードを設定
mysql> grant usage on mt.* to admin@localhost identified by 'パスワード';
Query OK, 0 rows affected (0.00 sec)
「mt」というデータベースに対してすべての権限を「admin」に許す
mysql> grant all on mt.* to admin@localhost;
Query OK, 0 rows affected (0.00 sec)
mysql> exit ← ログアウト
Bye