mysql の起動エラー

お世話になっております。
当方、Zabbix統合監視[実践]入門という書籍を用いながらZabbixの構築を行っている初心者です。

この度書籍通りにインストール作業を進めていったところ、Webインターフェースのインストールにて若干つまづきながらも
無事一度だけですが、Zabbixのインストールを終えることができました。

練習のためにと、一からまたインストールを始めたのですが、開始1分でいきなりつまづいてしまいました。

OS   CentOS6.4
リポジトリ   http://repo.zabbix.jp/relatedpkgs/rhel6/i386/zabbix-jp-release-6-6.noarch.rpm
Zabbixのバージョンは1.8でやろうと思ってます。

yum で mysql-serverをインストールして
vi で /etc/my.cnfを書籍通りに修正したのですが

# service mysqld start ⇒ 失敗 となります。

log?
↓ /var/log/mysqld.log

130930 19:45:36 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
130930 19:45:36 [Warning] '--default-character-set' is deprecated and will be removed in a future release. Please use '--character-set-server' instead.
/usr/libexec/mysqld: Table 'mysql.plugin' doesn't exist
130930 19:45:36 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
130930 19:45:36 InnoDB: Initializing buffer pool, size = 64.0M
130930 19:45:36 InnoDB: Completed initialization of buffer pool
InnoDB: Log scan progressed past the checkpoint lsn 0 37356
130930 19:45:36 InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Restoring possible half-written data pages from the doublewrite
InnoDB: buffer...
InnoDB: Doing recovery: scanned up to log sequence number 0 44233
130930 19:45:36 InnoDB: Starting an apply batch of log records to the database...
InnoDB: Progress in percents: 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
InnoDB: Apply batch completed
130930 19:45:36 InnoDB: Started; log sequence number 0 44233
130930 19:45:36 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist
130930 19:45:36 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

前回だとすんなりいきました。
何が原因かご教授頂けると、幸いです。

足りない情報などがありましたら、追記させていただきます。

コメント表示オプション

お好みのコメント表示方法を選び「設定の保存」をクリックすると変更が反映されます。
ユーザー TNK の写真

my.cnfをどのように変更したのかお教えください。
変更内容によっては、書籍には書かれていたはずですが、起動す
る前にいくつかの手順が必要です。

あと、MySQLのバージョンをCentOS 6標準以外のMySQL 5.1をインス
トール後、MySQL 5.5などの新しいバージョンにアップグレードし
ませんでしたか?
そうであれば、なおさらmy.cnfにどのような設定を追加されたのか
が影響しているかもしれませんし、アップグレード後にDB自体のア
ップグレードも実行する必要があったと思います。

例えば、設定に関してはエラーメッセージにもある通り、

 default-character-set

という設定は、新しいMySQLでは廃止予定になっていて、代わりに、

 character-set-server

という設定を利用するように設定する必要があります。

ユーザー ninja4job の写真

TNK さん
お世話になっております。

my.cnf 変更点 ⇒ 6行追加のみ
[mysqld]の↓に

default-character-set=utf8
skip-character-set-client-handshake

innodb_file_per_table
innodb_buffer_pool_size=64M
innodb_log_file_size=16M
innodb_log_files_in_group=2

また初心者なため、そのような高度なことはしていないと思います。
インストールしたばっかりのCentOS6.4に #yum mysql-serverをしただけです。

サーバインストールの練習にもなるので、もう一度最初から崩して一からやってみようと思います!

ユーザー KAZ の写真
ninja4jobさん
130930 19:45:36 [Warning] '--default-character-set' is deprecated and will be removed in a future release. Please use '--character-set-server' instead.
/usr/libexec/mysqld: Table 'mysql.plugin' doesn't exist
TNKさんも指摘していますが「default-character-set」は廃止予定で「character-set-server」と言う設定になります。
130930 19:45:36 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
「mysql.pluginテーブルが開けない。mysql_upgradeを実行しその(テーブル)を作成してください。」とでてます。
これは、5.0/5.1系のMySQLでデータ領域を作って5.5をインストールすると出るメッセージです。

■対策方法として…
1)my.cnfの設定をMySQL5.5様に変更する
「default-character-set」 → 「character-set-server」

2)MySQLのデータ領域をMySQL5.5形式で再作成する
2-1)my.cnfのdatadirをmvして退避(datadir=/var/lib/mysql)
mv /var/lib/mysql /var/lib/mysql_old

2-2)データ領域を新規作成
mysql_install_db --user=mysql --datadir=/var/lib/mysql

2-3)上手くMySQLが起動したら/var/lib/mysql_oldを削除
rm /var/lib/mysql_old

上記は、以前私がとあるシステムのMySQLを5.1から5.5に変更を行った手順の1部です。


















ユーザー ninja4job の写真

KAZ さん

回答ありがとうございます!

TNKさんがおっしゃっていたようにやはりmysqlのバージョン関係ですか・・・
そんな難しそうなことはしておらず
#yum install mysql-serverを一度打っただけなんですけどね。

でも、コンピュータは嘘をつきませんから、きっと私がどこかで間違えたのでしょう・・・。

回答ありがとうございました!

ユーザー KAZ の写真

ninja4jobさん


TNKさんがおっしゃっていたようにやはりmysqlのバージョン関係ですか・・・

mysql.pluginテーブルはMySQL5.5からできるテーブルなんですよ。


そんな難しそうなことはしておらず
#yum install mysql-serverを一度打っただけなんですけどね。

私も似た現状になったことあるのですが、mysql_upgradeを実行して上手く行かない場合があって…
※:OSインストール時の構成選択でおかしくなるのか…

Try&Errorの結果、このエラーがでたら『データ領域から作りなおせば簡単』と言うのが…A(^^;

ユーザー kng の写真

横から失礼します。

CentOS6系なので、yumインストールを普通にやると、5.1が入りますね。
ちなみにMySQL5.1にも、pluginテーブルありますよ?

ログから推察するに、/var/lib/mysqlにアクセスできていないように見えます。

/var/lib/mysql 配下へmysqlユーザがアクセス可能な状態か確認ください。

ユーザー KAZ の写真

kngさん


CentOS6系なので、yumインストールを普通にやると、5.1が入りますね。
ちなみにMySQL5.1にも、pluginテーブルありますよ?

pluginテーブルは5.1からできたテーブルでしたっけ?
失礼しました。
ご指摘ありがとうございます。m(__)m

もしかして、my.cnfのdatadirの指定が間違っているとか…A(^^;
configureとyumでdatadir異なるような…

ユーザー kng の写真

KAZさん

データディレクトリはたしかに、ビルドすると/usr/local/mysqlとかに
なったりしますが、そこはパラメータのさじ加減次第ですし。。。

今回の前提条件では、yum install mysql-serverで入れたとなってますしね。。。

インストール後に innodb_file_per_tableして、再起動したときに
生成されたファイルパーミッシヨンがおかしい。。。

とか考えられそうですが。。。

復旧方法としては、KAZさんの提示されている方法でいけると思います。

あとは、chownとかして権限変えてみるとか。。。
詳細見えないので、確実なのはdb作り直すのが懸命ですかね。

ユーザー cabin の写真

ninja4jobさん

同じ初心者ということで、僭越ながら横から口を挟んでみます。
私のような超初心者は、どんな情報でも欲しいと思うので。
そこまでのレベルじゃないってことなら、申し訳ありません。

・「練習のためにと、一からまたインストールを始めた」との事ですが、OS含め まっさらにしてやったのでしょうか?
・なんかパーミッションの問題のようなのですが、ユーザ権限は何でインストされましたか?

私も同じ書籍を参考にZabbixを構築しました(Cent6.4+Zabbix2.0でしたが)。
その時は、MySQLのインストに関しては素直に出来た記憶があります。
(テーブルの作成は、Zabbix2.0では本のとおりだと失敗したはずですが(^_^;))

その時は、私はテスト環境だったので全てrootで構築&実行しました。

あまり参考にはならないと思いますが・・・・。