2009年10月25日日曜日

MySQLのインストール

MySQL5.xのインストール

いつもインストールのやり方を忘れてしまうので、メモしておきます。ここではコンパイル済みバイナリを使用し、CentOS5 にインストールしています。

インテルのCPUで実行する場合は、gccよりもインテルCコンパイラでコンパイルされたバイナリ *1 の方が速い、といわれてますので、それを使用します。

# groupadd mysql
# useradd -g mysql mysql
# cd /usr/local
# tar zxvf /path/to/mysql-VERSION-OS.tar.gz
# ln -s full-path-to-mysql-VERSION-OS mysql
# cd mysql
# chown -R mysql .
# chgrp -R mysql .
# scripts/mysql_install_db --user=mysql
# chown -R root .
# chown -R mysql data
# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
# chkconfig --add mysqld
# chkconfig mysqld on
4.1まではバイナリを展開するだけだったのですが、5.xからは "scripts/mysql_install_db --user=mysql" を実行するようになったようです。

参考URL: http://dev.mysql.com/doc/refman/5.0/en/installing-binary.html

my.cnf の設定

my.cnfを作成し、default-character-set を設定します。my.cnf は同梱のものを利用し、必要に応じて変更します。ここではアプリケーションのインストールテスト *2 という小規模な用途でしたので、my-small.cnf を使用しました。

# cp /usr/local/mysql/support-files/my-small.cnf /etc/my.cnf
# vi /etc/my.cnf

 -----------------------------------
 [mysqld]
 default-character-set=utf8  ←追加
 -----------------------------------

# /etc/init.d/mysqld restart
# 
$ su - mysql
$ mysql -uroot --default-character-set utf8 -p

mysql> SHOW VARIABLES LIKE 'character\_set\_%';
+--------------------------+--------+
| Variable_name            | Value  |
+--------------------------+--------+
| character_set_client     | utf8   |
| character_set_connection | utf8   |
| character_set_database   | utf8   |
| character_set_filesystem | binary |
| character_set_results    | utf8   |
| character_set_server     | utf8   |
| character_set_system     | utf8   |
+--------------------------+--------+
7 rows in set (0.00 sec)

mysql>

キャラクタセットの指定

ターミナルから mysql コマンドで接続して sql を実行すると、日本語が文字化けします *3。これは、mysql のキャラクタセットが指定されてないからです。デフォルトでは、以下のような感じです。

mysql> SHOW VARIABLES LIKE 'character\_set\_%';
+--------------------------+--------+
| Variable_name            | Value  |
+--------------------------+--------+
| character_set_client     | latin1 |
| character_set_connection | latin1 |
| character_set_database   | utf8   |
| character_set_results    | latin1 |
| character_set_server     | latin1 |
| character_set_system     | utf8   |
+--------------------------+--------+
6 rows in set (0.01 sec)

mysql> select entry_id, entry_class, entry_text from mt_entry where entry_class = 'page';
+----------+-------------+--------------------+
| entry_id | entry_class | entry_text         |
+----------+-------------+--------------------+
|        4 | page        | ?????????????????  |
+----------+-------------+--------------------+
1 row in set (0.01 sec)

mysql> 

キャラクタセットを指定すると、OK。

mysql> SET CHARACTER SET utf8;
Query OK, 0 rows affected (0.01 sec)

mysql> SHOW VARIABLES LIKE 'character\_set\_%';
+--------------------------+--------+
| Variable_name            | Value  |
+--------------------------+--------+
| character_set_client     | utf8   |
| character_set_connection | utf8   |
| character_set_database   | utf8   |
| character_set_results    | utf8   |
| character_set_server     | latin1 |
| character_set_system     | utf8   |
+--------------------------+--------+
6 rows in set (0.00 sec)

mysql> select entry_id, entry_class, entry_text from mt_entry where entry_class = 'page';
+----------+-------------+------------------------------------------------------+
| entry_id | entry_class | entry_text                                           |
+----------+-------------+------------------------------------------------------+
|        4 | page        | 地震だ。でかいぞ。もうだめだ。><                   |
+----------+-------------+------------------------------------------------------+
1 row in set (0.00 sec)

mysql>

また、起動時に指定することもできます。

$ mysql -uroot --default-character-set utf8

マニュアルだと、このあたりです。
http://dev.mysql.com/doc/refman/5.1/ja/charset-connection.html


*1 ファイル名に -icc- が入っているやつです。たとえば mysql-5.0.51a-linux-i686-icc-glibc23.tar.gz とか。
*2 下の例でおわかりのように、MovableType のインストールテストです。
*3 LANGやターミナルのエンコーディングを合わせているのは前提とします。

0 件のコメント:

コメントを投稿