2006.12.10
mysql-5.0.27のインストール(obsolete)・・・(Database)
(obsolete) MySQL バージョン5.5.6 を御覧ください
11月の中旬にmysqlとphpを用いた頼まれもののアプリを書いているときに、うっかりmysqlを壊してしまった。
最初は簡単に復帰でいるだろうと思っていたが、日本語処理でトラブルがでて、大変な目に会ってしまった。
解ってしまえば簡単なことであったのだが、時間に追われる中で混乱を来たし、私のところのサーバでブログを開設している5人ほどの人にも大変な迷惑をかけてしまった。
前置きはこれぐらいで、本筋に戻るが、どうせ壊れたのだからmysql-4.1をmysql-5.0.27に上げようと、/ports/databases/mysql50-serverとmysql50-clientを入れようとした。
調べるとEUCを使うにはコンパイルオプションで以下のように、デフォルトの文字コードのujis(EUC)とその他の文字を以下のように指定すれば良いことが分かった。
# make WITH_CHARSET=ujis WITH_XCHARSET=all install clean
次に/etcに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 max_allowed_packet = 1M table_cache = 64 sort_buffer_size = 512K net_buffer_length = 8K read_buffer_size = 256K read_rnd_buffer_size = 512K myisam_sort_buffer_size = 8M
mysqlをuserとgroupに追加
#vipwして次の1行を追加
mysql:*:88:88::0:0:MySQL Daemon:/nonexistent:/sbin/nologin
次に/etc/groupにmysqlを追加
# vi /etc/group して次の1行を追加
mysql:*:88:
そして、DBをインストールして起動
# mkdir /usr/db # mysql_install_db # chown -R mysql /usr/db/mysql # cd /usr/local/etc/rc.d # cp /usr/local/share/mysql/mysql.server ./mysql-server.sh # ./mysql-server.sh start
無事起動したら、mysql-clientからパスワードを設定
# mysql -u root mysql > use mysql; mysql > set password for root@localhost=password('xxxxx'); mysql> flush privileges; mysql > exit;
パスワードの設定は以前は set password for root=password(‘xxxxx’); で良かったが、今回は
root@localhost=password(‘xxxxx’); と
@localhostが必要であった。
最初の起動でrootのパスワードの設定を行わずに抜けると、後からloginできず酷い目に会う。
筆者も、うっかりやってしまって、大変な思いをした。
一応loginが出来なくなった場合の対処方法を下記に書いておく。
# mysqld_safe --skip-grant-tables & # mysql -u root mysql mysql > UPDATE user SET Password=PASSWORD('mynewpassword') -> WHERE User='root'; mysql > flush privileges;
この後、mysql;を停止(kill)して、正規に立ち上げる。
さて、無事にインストールして念のために文字コードを調べたら、
# 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)
ujis(EUC)になっていないので、/etc/my.cnfで指定するのだろうと思って、[mysqld]の中で、[mysqld]のセクションに、
default-character-set=ujis
を入れて、起動しようとすると、ujisなんて無いよと怒られる。
だって、WITH_CHARSET=ujisを入れたじゃないかと叫んでも、どうにもならない。
結局、http://www.mysql.com からソースをダウンロードして自前でコンパイルして入れることにした。
サイトのダウンロードページには、WindowsやLinuxのPrecompiled Binaryのファイルがずらっと並んでいるが、一番下に、Tarball (in 5.1 both Unix & Windows, tar.gz)があったので、これをダウンロードする。
そして、以下のようにしてインストール、
# tar xvzf mysql-5.0.27.tar.gz # cd mysql-5.0.27 # ./configure --prefix=/usr/local --with-charset=ujis --with-extra-charset=all --with-mysqld-user=mysql
無事configureが終わり、いよいよインストール
# make install
clientは問題なさそうなので、早速起動して文字コードを調べてみる。
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)が使えるようになっている。
早速ブログ用のmtdbを作って(mysqlの導入参照)、念のために再立ち上げして文字コードを調べる。
mysql > use mtdb; mysql> SHOW VARIABLES LIKE 'character_set_%'; +------------------------------------+---------+ | Variable_name | Value | +-------------------------------------+--------+ | character_set_client | ujis | | character_set_connection | ujis | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | ujis | | character_set_server | ujis | | character_set_system | utf8 | +-------------------------------------+-------+
databaseがlatin1(うろ覚えなのでbinaryだったかも知れない)になっている。
どうも、以前の古いデータを参照しているようなので、一度 mtdbを破棄して、改めて作成する。
そして、文字コードを調べる。
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とfilesystemを除き、全てujsiになっている。
しかし、ブログのデータを飛ばしたのは申し訳ないことをした・・・
コメント
コメントフィードを購読する
コメント投稿