package の場合:
# pkg_add -r mysql50-server # pkg_add -r p5-DBD-mysqlports の場合:
# cd /usr/ports/databases/mysql50-server/ # make # make install # cd /usr/ports/databases/p5-DBD-mysql/ # make # make installあらかじめ用意されている my-medium.cnf から、設定ファイル my.cnf を作成します。
# cp /usr/local/share/mysql/my-medium.cnf /usr/local/etc/my.cnfデフォルトの設定だと使用される文字コードが Latin-1 になっているので、my.cnf を編集してこれを UTF-8 に変更します。
# vi /usr/local/etc/my.cnf各セクションに追加する内容は以下の通りです。
[client] default-character-set = utf8 [mysqld] datadir = /var/db/mysql default-character-set = utf8 character-set-server = utf8 skip-character-set-client-handshake [mysqldump] default-character-set = utf8 [mysql] default-character-set = utf8datadir に関しては、設定しなくてもデフォルトで /var/db/mysql になります。明示的に指定しておきたかったので書くことにしました。
注目すべきは character-set-server と skip-character-set-client-handshake。
MySQL では、サーバーとクライアントの間で文字コードが違っている場合、自動的に変換してくれます。ただし、仕様として、必ず一度 Unicode(ucs2) に変換してから目的の文字コードに変換します。この自動変換がうまくいかない場合に、文字化けという結果で度々私たちに余計な迷惑をかけてくれます。
自動変換は時として便利ではあるのですが、あらかじめサーバーとクライアントであらかじめ同じ文字コードを使うよう設定しておけば済む話なので、この変換をスキップさせる設定として skip-character-set-client-handshake を設定します。
なお、これが使えるのは MySQL 4.1.5 / 5.0.13 以降ですのでご注意を。
また、skip-character-set-client-handshake は、変数 character_set_server にセットされている文字コードを参照するらしい。で、character-set-server は、その変数 character_set_server のデフォルト値を設定するものらしい。ネットで探した情報だが、正直何のために参照するのかよく分からない... まぁ、必要そうなので、一応書いておくことにします。
ただし、注意点がひとつ。少なくとも現行バージョンの MySQL まででは、default-character-set と character-set-server の違いが見られないということです。
つまり、どちらの設定値もデフォルトの文字コードとして使用される。両方を書き、さらに双方の文字コードが違っている場合には、後に記述した設定が優先される、というか上書きされ、使用されることになる。
default-character-set と character-set-server の違いについてネットで調べたところ、どうやら、default-character-set でサーバーのキャラクタセットがすべて初期化されるが、その対象が character-set-server という話らしい。...うーん、よく分からない。
現時点での結論としては、両方書く必要性はないと思われる。両方設定してもいいけど、設定するなら後々混乱しないように文字コードは必ず一致させておくこと。
...っと、話が横道に逸れてしまいました。えと、設定が終わったら MySQL を初期化します。
# /usr/local/bin/mysql_install_db次に、MySQL のデータファイルが保存されるディレクトリの所有者を設定します。
# chown -R mysql /var/db/mysql/MySQL デーモンを起動します。
# /usr/local/etc/rc.d/mysql-server startMySQL の root のパスワードを設定します。
# mysqladmin -u root -h localhost password 'XXXXXX'サーバーを再起動しても自動的に MySQL サーバーが起動するように rc.conf に設定を追加します。(すでに追加されている場合には何もする必要はありません。)
# vi /etc/rc.conf追加する内容は、以下の通りです。
mysql_enable="YES"以上です。お疲れ様でした。
参考にしたサイト
コメント