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)が使えるようになった。 やれやれ。
コメント
コメントフィードを購読する
コメント投稿