portauditから、php5の問題を指摘されたので、php5関連をバージョンアップした。
すると、php5-mysqlだけがうまくバージョンアップされない。
portupgradeを使わずに、/usr/ports/databases/php5-mysql で make してみると、mysql5.0なんて知らないと言われる。
/usr/ports/databasesを見ると、確かにmysql50-serverは既に存在しない。
最新は5.6っぽいので、バージョンアップすることにする。
つらつらと調べると、Upgrading mysql 5.1 to 5.5 on FreeBSD - 203 Creativeと言うページを発見。
まずは、以下のコマンドでmysql-clientに依存しているportsを調べる。(一部出力を省略)
# portupgrade -frn mysql-client
--->  Session started at: Sat, 15 Jun 2013 07:38:39 +0900
--->  Listing the results (+:done / -:ignored / *:skipped / !:failed)
        - databases/mysql50-client (port deleted)
        - databases/mysql50-server (port deleted)
        - net-mgmt/cacti (marked as IGNORE)
        - databases/p5-DBD-mysql (marked as IGNORE)
        - databases/php5-mysql (marked as IGNORE)
        - databases/p5-DBIx-Class-Schema-Loader (marked as IGNORE)
--->  Packages processed: 0 done, 6 ignored, 0 skipped and 0 failed
--->  Session ended at: Sat, 15 Jun 2013 07:38:42 +0900 (consumed 00:00:02)
んで、参考サイトには書いてないけど怖いのでmysql-serverを止めて、古いバージョンをアンインストール。
# pkg_deinstall -f mysql-client-5.0.90
# pkg_deinstall -fO mysql-server-5.0.77_1
この過程でも依存関係が表示されるので、最初の手順は不要かも。Oオプションを付けているのは、clientのアンインストールでserverの依存関係がなくなって、pkgdb -F するか -O をつけろと言われるので。
続いて、新しいバージョンをインストール。
# portupgrade -N databases/mysql56-server
インストールの過程でcmake関連のエラーが出たので、cmakeもportupgradeした。
インストールが終わったらDBサーバを起動。
# /usr/local/etc/rc.d/mysql-server start
んが、プロセスが起動しない。/var/db/mysql/ホスト名.err にログがあるので確認すると、--skip-locking なんてオプションは知らないと言っている。
/var/db/mysql/my.cnf に設定ファイルがあるので、該当の行をコメントアウト。
しかしまた別のエラーが出るので、/usr/local/share/mysql/ から適当な設定ファイルのデフォルトをmy.cnfにコピー。
これで、サーバが起動したと思いきや、サブプロセスがsignal 11で死にまくっている。
原因がわからなかったので、5.6は諦めてアンインストールし、再度mysql55-serverをインストール。
んで、起動してみると、今度は
InnoDB: Error: log file ./ib_logfile0 is of different size 0 50331648 bytes
InnoDB: than specified in the .cnf file 0 52428800 bytes!
みたいなエラーで起動しない。
そこで、my.cnf に以下の記述を追加した。
innodb_log_file_size = 50331648
元々デフォルトで使っていたはずなので、どこかのバージョンでデフォルトのサイズが変わったのね。
これでなんとか起動したので、mysql_upgradeを実行してみる。
# mysql_upgrade
Looking for 'mysql' as: mysql
Looking for 'mysqlcheck' as: mysqlcheck
FATAL ERROR: Upgrade failed
・・・なんだかわかりませんが失敗。
MySQL :: MySQL 5.1 リファレンスマニュアル :: 4.5.4 mysql_upgrade -- MySQL アップグレードのテーブル チェックを見ると、mysql_upgradeは中でmysqlcheckを実行するらしいので、直接叩いてみる。
# mysqlcheck --check-upgrade --all-databases --auto-repair
mysqlcheck: Got error: 1045: Access denied for user 'root'@'localhost' (using password: NO) when trying to connect
えーっと、rootユーザでのDBアクセスに認証がかかっているせいですね。うん、確かにパスワードつけてる(MySQL - PC日記)
が、2005年につけたパスワードなんか覚えていない!
# ちなみに、覚えている場合は -p オプションをつければmysqlcheckがパスワードを聞いてくれます。
覚えていない場合はどうするのかと思って調べたら、MySQL :: MySQL 4.1 リファレンスマニュアル :: A.4.2 忘れたルートパスワードをリセットする方法がひっかかったので、そこを見て my.cnf に以下を記述。
skip-grant-tables
で、mysql-serverを再起動すると、mysqlcheckが成功した。
で、再度 mysql_upgrade を実行したら、今度は最後まで実行できたので、serverを止めて、skip-grant-tablesを削除した。

ここまででmysql自体のアップグレードは終了なので、最初に調べたmysql-clientに依存しているportsをportupgrade -f して、今回の作業は終了。

カテゴリ

トラックバック(0)

このブログ記事を参照しているブログ一覧: MySQLのバージョンアップ

このブログ記事に対するトラックバックURL: https://www.wizard-limit.net/cgi-bin/mt/mt-tb.cgi/3054

コメントする

このブログ記事について

このページは、falseが2013年6月15日 12:21に書いたブログ記事です。

ひとつ前のブログ記事は「iOS6の印刷」です。

次のブログ記事は「zabbix」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

広告

Powered by Movable Type 6.1.1