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 - 投稿数: 4769
my.cnfをどのように変更したのかお教えください。
変更内容によっては、書籍には書かれていたはずですが、起動す
る前にいくつかの手順が必要です。
あと、MySQLのバージョンをCentOS 6標準以外のMySQL 5.1をインス
トール後、MySQL 5.5などの新しいバージョンにアップグレードし
ませんでしたか?
そうであれば、なおさらmy.cnfにどのような設定を追加されたのか
が影響しているかもしれませんし、アップグレード後にDB自体のア
ップグレードも実行する必要があったと思います。
例えば、設定に関してはエラーメッセージにもある通り、
default-character-set
という設定は、新しいMySQLでは廃止予定になっていて、代わりに、
character-set-server
という設定を利用するように設定する必要があります。
ninja4job - 投稿数: 16
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 - 投稿数: 1085
これは、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 - 投稿数: 16
KAZ さん
回答ありがとうございます!
TNKさんがおっしゃっていたようにやはりmysqlのバージョン関係ですか・・・
そんな難しそうなことはしておらず
#yum install mysql-serverを一度打っただけなんですけどね。
でも、コンピュータは嘘をつきませんから、きっと私がどこかで間違えたのでしょう・・・。
回答ありがとうございました!
KAZ - 投稿数: 1085
ninja4jobさん
TNKさんがおっしゃっていたようにやはりmysqlのバージョン関係ですか・・・
mysql.pluginテーブルはMySQL5.5からできるテーブルなんですよ。
そんな難しそうなことはしておらず
#yum install mysql-serverを一度打っただけなんですけどね。
私も似た現状になったことあるのですが、mysql_upgradeを実行して上手く行かない場合があって…
※:OSインストール時の構成選択でおかしくなるのか…
Try&Errorの結果、このエラーがでたら『データ領域から作りなおせば簡単』と言うのが…A(^^;
kng - 投稿数: 30
横から失礼します。
CentOS6系なので、yumインストールを普通にやると、5.1が入りますね。
ちなみにMySQL5.1にも、pluginテーブルありますよ?
ログから推察するに、/var/lib/mysqlにアクセスできていないように見えます。
/var/lib/mysql 配下へmysqlユーザがアクセス可能な状態か確認ください。
KAZ - 投稿数: 1085
kngさん
CentOS6系なので、yumインストールを普通にやると、5.1が入りますね。
ちなみにMySQL5.1にも、pluginテーブルありますよ?
pluginテーブルは5.1からできたテーブルでしたっけ?
失礼しました。
ご指摘ありがとうございます。m(__)m
もしかして、my.cnfのdatadirの指定が間違っているとか…A(^^;
configureとyumでdatadir異なるような…
kng - 投稿数: 30
KAZさん
データディレクトリはたしかに、ビルドすると/usr/local/mysqlとかに
なったりしますが、そこはパラメータのさじ加減次第ですし。。。
今回の前提条件では、yum install mysql-serverで入れたとなってますしね。。。
インストール後に innodb_file_per_tableして、再起動したときに
生成されたファイルパーミッシヨンがおかしい。。。
とか考えられそうですが。。。
復旧方法としては、KAZさんの提示されている方法でいけると思います。
あとは、chownとかして権限変えてみるとか。。。
詳細見えないので、確実なのはdb作り直すのが懸命ですかね。
cabin - 投稿数: 3
ninja4jobさん
同じ初心者ということで、僭越ながら横から口を挟んでみます。
私のような超初心者は、どんな情報でも欲しいと思うので。
そこまでのレベルじゃないってことなら、申し訳ありません。
・「練習のためにと、一からまたインストールを始めた」との事ですが、OS含め まっさらにしてやったのでしょうか?
・なんかパーミッションの問題のようなのですが、ユーザ権限は何でインストされましたか?
私も同じ書籍を参考にZabbixを構築しました(Cent6.4+Zabbix2.0でしたが)。
その時は、MySQLのインストに関しては素直に出来た記憶があります。
(テーブルの作成は、Zabbix2.0では本のとおりだと失敗したはずですが(^_^;))
その時は、私はテスト環境だったので全てrootで構築&実行しました。
あまり参考にはならないと思いますが・・・・。