今更ながら, Debian を 5から6へ, lenny からsqueezeへupgrade.
apt-get update apt-get dist-upgrade
すると, grub のバージョンが変わったからとりあえず古いやつから新しいやつをchain loadするとか, diskの命名法がUUIDに変わったとか, いろいろ怖そうなことを言われるが, 意外にも, reboot すると何の問題もなかった. mysql-server を除いては.
まずは /var/run/mysql/mysql.sock がないと言われる. 自分で作ってもよかったかもしれないが, 安直にも
apt-get remove --purge mysql-server; apt-get install mysql-server
してみる.
hostname:/home/username# /etc/init.d/mysql restart Stopping MySQL database server: mysqld. Starting MySQL database server: mysqld. Checking for corrupt, not cleanly closed and upgrade needing tables.. hostname:/home/username# ERROR 1577 (HY000) at line 1: Cannot proceed because system tables used by Event Scheduler were found damaged at server start
こんな方法で修正
hostname:/home/username# mysql_upgrade -u root -h localhost -p --verbose --force Enter password: Looking for 'mysql' as: mysql Looking for 'mysqlcheck' as: mysqlcheck Running 'mysqlcheck' with connection arguments: '--port=3306' '--socket=/var/run/mysqld/mysqld.sock' '--host=localhost' Running 'mysqlcheck' with connection arguments: '--port=3306' '--socket=/var/run/mysqld/mysqld.sock' '--host=localhost' database.table OK (...) mysql.columns_priv OK mysql.db OK mysql.event Error : Can't find file: './mysql/event.frm' (errno: 13) status : Operation failed mysql.func OK mysql.general_log Error : Can't find file: './mysql/general_log.frm' (errno: 13) status : Operation failed mysql.help_category OK (...)
ここで問題になっている .frm ファイルは, データベースのデータ本体らしいが, /var/lib/mysql/mysql のこと. ユーザデータではなく, mysqlがもともともつ管理用データベース. これらの owner:group が root:root になってるものだけ, このエラーを出していたので,他のものと同じ mysql:mysql に直したら, ErrorやWarningは出なくなった.