MySQLのトラブル


昨日、このブログにログインしようとした所500エラーが出て入れない状況となっていました。

とりあえずサーバの調子を見てみたところ、問題無し。
ブログ以外のページにはアクセス出来たのでwordpressの障害と判断して、デバッグモードで開いてみたところ。
「MySQLとの接続を確立出来ませんでした」とのメッセージが出たのでMYSQLを確認して見ました。

# /etc/rc.d/init.d/mysqld start
# mysql -u USER -p
Enter password:
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)

MySQLが落ちてる?そう思って立ち上げようとしたものの

# /etc/rc.d/init.d/mysqld start
MySQL Daemon failed to start.
mysqld を起動中: [失敗]

このような状態で、restartしても同じ。

そこでMySQLのログを見てみます。

120126 03:57:43 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
120126 3:57:44 [Note] Plugin ‘FEDERATED’ is disabled.
/usr/libexec/mysqld: Table ‘mysql.plugin’ doesn’t exist
120126 3:57:44 [ERROR] Can’t open the mysql.plugin table. Please run mysql_upgrade to create it.
120126 3:57:44 InnoDB: The InnoDB memory heap is disabled
120126 3:57:44 InnoDB: Mutexes and rw_locks use InnoDB’s own implementation
120126 3:57:44 InnoDB: Compressed tables use zlib 1.2.3
120126 3:57:44 InnoDB: Using Linux native AIO
120126 3:57:44 InnoDB: Initializing buffer pool, size = 128.0M
120126 3:57:44 InnoDB: Completed initialization of buffer pool
120126 3:57:44 InnoDB: highest supported file format is Barracuda.
120126 3:57:45 InnoDB: Waiting for the background threads to start
120126 3:57:46 InnoDB: 1.1.8 started; log sequence number 1588771
120126 3:57:46 [ERROR] /usr/libexec/mysqld: unknown variable ‘default-character-set=utf8′
120126 3:57:46 [ERROR] Aborting

怪しい箇所について調べている内に、unknown variable ‘default-character-set=utf8′とある箇所が最も怪しいという判断になりました。
要は設定されている「default-character-set=utf8」がデータベース側で知らないって事で弾かれている雰囲気ですので。
Please run mysql_upgrade to createとか言われても、MySQLが立ち上がらないのでupgrade出来ませんし・・・
そう言えば、数日前にyumでアップデータした時MySQLも入っていた気がするけど、その時に何か仕様が変わったのかなと思ってみたり。

そこで上記エラー文で調べて、こちらのページを参考に対処しました。

/etc配下にあるmy.cnfを開いて編集します。

[mysqld]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
default-character-set = utf8
character-set-server=utf8

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid]

default-character-set = utf8

[mysql]
default-character-set = utf8

青字がコメントアウトした箇所で赤字が追記箇所です。

そしてMySQLを起動します。

# /etc/rc.d/init.d/mysqld start
mysqld を起動中: [ OK ]

そしてデータベースに接続出来ることも確認し、念のためにupgradeしました。

# mysql_upgrade -u USER -p

これで今回の対処は終了。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>