« | Home | »

2010.10.17

MySQL バージョン5.5.6・・・(Database)

*** 2010/12/16に内容一部修正しました ***
家のサーバーはFreeBSD-7.0で運用しているが、そろそろ最新のFreeBSD-8.1に上げようと準備中です。
OSのインストール後にMySQLをportsで入れて、文字コードの設定で引っかかった。
(1) インストール

# cd /usr/ports/databases/mysql55-server
# make WITH_CHARSET=ujis WITH_XCHARSET=all install clean
# cd ../mysql55-client
# make WITH_CHARSET=ujis WITH_XCHARSET=all install clean

(2) my.cnfの編集

# cp /usr/local/share/mysql/my-medium.cnf /etc/my.cnf
# cd /etc
# chmod +w my.cnf
# vi my.cnf
[mysqld]
datadir = /usr/db/mysql
port            = 3306
socket          = /tmp/mysql.sock
skip-locking
key_buffer = 16M

(3) DBをインストール

# mkdir /usr/db
# mysql_install_db --basedir=/usr/local --datadir=/usr/db/mysql
# chown -R mysql /usr/db/mysql

(4) 起動

次にmysqlの起動ファイルを修正します。

# cd /usr/local/etc/rc.d
# chmod +w mysql-server
# vi mysql-server

下記の赤字部分を修正する。
mysql_dbdirの記述を有効にして/usr/db/mysqlを指定し、
–defaults-extra-file=/etc/my.cnf として、/etc/my.cnfを明に指定する。

: ${mysql_enable="NO"}
: ${mysql_limits="NO"}
${mysql_dbdir="/usr/db/mysql"}
: ${mysql_args=""}
mysql_user="mysql"
mysql_limits_args="-e -U ${mysql_user}"
pidfile="${mysql_dbdir}/`/bin/hostname`.pid"
command="/usr/sbin/daemon"
command_args="-c -f /usr/local/bin/mysqld_safe --defaults-extra-file=/etc/my.cnf --user=${mysql_user} --datadir=${mysql_dbdir} --pid-file=${pidfile} ${mysql_args}"

これで、ようやくMySQLを起動できる。

# ./mysql-server start

(5) パスワード設定

# mysql -u root
mysql > use mysql;
mysql > set password for root@localhost=password('xxxxx');
mysql> flush privileges;
mysql > exit;

(6) 文字コード調べ

# mysql -u root -p
Password xxxxxxx
mysql > SHOW VARIABLES LIKE 'character_set_%';
+-----------------------------------+--------+
| Variable_name                             | Value   |
+-----------------------------------+--------+
| character_set_client              | latin1 |
| character_set_connection     | latin1 |
| character_set_filesystem              | binary |
| character_set_database               | latin1 |
| character_set_results                    | latin1 |
| character_set_server          | latin1 |
| character_set_system           | utf8   |
+------------------------------------+--------+
6 rows in set (0.00 sec)

入れたままだと、latin1の文字コードになっている。

(7) 文字コード指定

MySQLをストップして、/etc/my.cnfの[mysqld]のセクションにdefault-character-set=ujisを追加したら、エラーが出て起動できなくなった
調べたらdefault-character-set=ujisは変更され使えなくなったことが分かり、下記のように2行追加した。

[mysqld]
datadir = /usr/db/mysql
port            = 3306
socket          = /tmp/mysql.sock
skip-external-locking
    ・
    ・
myisam_sort_buffer_size = 8M
character-set-server=ujis
skip-character-set-client-handshake

(8) 再確認

mysql> SHOW VARIABLES LIKE 'character_set_%';
+----------------------------------+--------+
| Variable_name                 | Value   |
+----------------------------------+--------+
| character_set_client          | ujis |
| character_set_connection            | ujis |
| character_set_database      | ujis |
| character_set_filesystem              | binary |
| character_set_results           | ujis |
| character_set_server            | ujis |
| character_set_system          | utf8   |
+----------------------------------+--------+

systemはデフォルトでutf8、filesystemはbinaryで問題ないので、無事ujsi(EUC)が使えるようになった。 やれやれ。


コメント

コメントはありません

コメントフィードを購読する

コメント投稿





コメント本文に次の(X)HTMLタグを使えます:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)