purazumakoiの[はてなブログ]

技術メモから最近はライフログも増えてきてます。

Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist

MySQL4、MySQL5を共存しようとしてこんなエラーがでました。

[ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist

とりあえずやったこと

デフォルト  /etc/my.cnf を見に行くのでmysql5用のは退避。あとで戻す
# mv /etc/my.cnf /etc/my5.cnf

起動スクリプトを見る

# vi /etc/rc.d/init.d/mysql.server

↓datadirのパスを指定、確認
datadir=/usr/local/mysql/var

my.cnfを確認

今回はMySQL5はデフォでMySQL4をあとでいれるので/etc/my4.cnfという形で置いた

↓datadirのパスを指定、確認

新規作成
# vi /etc/my4.cnf


[client]
port     = 3307
socket   = /tmp/mysql.sock
[mysqld]
port     = 3307
socket   = /tmp/mysql.sock
pid-file = /usr/local/mysql/mysqld4.pid
datadir  = /usr/local/mysql/var
[mysqld_safe]
log-error=/var/log/mysqld4.log
pid-file=/usr/local/mysql/mysqld4.pid

ということでmysqlのデータは/usr/local/mysql/varということで

# /usr/local/mysql/bin/mysql_install_db --basedir=/usr/local/mysql --user=mysql
# chown -R mysql:mysql /usr/local/mysql

起動スクリプト修正
# vi /etc/rc.d/init.d/mysql.server

---- 155行目辺りに「--defaults-file=/etc/my4.cnf」を追記
$bindir/mysqld_safe --defaults-file=/etc/my4.cnf --datadir=$datadir --pid-file=$pid_file >/dev/null 2>&1 &

MySQL4を停止・起動
# /etc/rc.d/init.d/mysql.server stop;
# /etc/rc.d/init.d/mysql.server start;

動いているか確認
# netstat -anop
多すぎるので指定した3307ポートで動いているかどうか指定
# netstat -anop | grep 3307