mysqlで気をつけないといけないことがありました。あまり多くお目にかかる問題ではないと思いますが、mysqlのアップデート時にどうしても更新ができないわけなのです。数週間放っておいて(もしアップデートのソース自体のバグだったら数日後には解消されているだろうという楽観的な考えでもって)何とかなるでしょうぐらいに思っていたのだけど、全然どうにもなっていない。しかも世間で全く騒いでいない様子であり、どうやら自分のサーバーだけの話になっている...んですね。さすがにアップデート一度サボるとその後がホントに面倒なことになるので、原因を追求。
MySQLのハックについては殆ど素人同然の自分でありまして、基本的な使い方ができるぐらい...という感じであってどこに何のファイルがどんな感じでおいてあるのすらもわからないわけです。とにかく/var/log辺りに何かエラーログでもあるんだろう...と探してみるとやはりMySQLログのディレクトリがある。喜び勇んで開いてみると空!なぜ。どうやらログを取るような設定にしていないらしい。何かのマニュアルを読んで設定したのだけど、たぶん基本的な設定のみで特にログの記録なんていうものはすっ飛ばしていたのだろう。
そんなわけでsyslog辺りを探るわけですが、ありました、ありましたよ。ちょうどその時刻にばっちりエラー出てるんです。
調べてみるとMySQLにスクリプトがログインする際に登録されているものを使うとログインできません!というエラーメッセージらしいのです。そのMySQLにログインしたがっているスクリプトというのが、debian-sys-maintさんという方です。彼は/etc/mysql/debian.cnfというファイルにパスワードを聞きにいってからログインしようとするのですが、どうやらそれができない...ということ。
debian-sys-maintさんのパスワードをちゃんと一致させておくとこういうエラーは起こらないです。
これで治った!
MySQLのハックについては殆ど素人同然の自分でありまして、基本的な使い方ができるぐらい...という感じであってどこに何のファイルがどんな感じでおいてあるのすらもわからないわけです。とにかく/var/log辺りに何かエラーログでもあるんだろう...と探してみるとやはりMySQLログのディレクトリがある。喜び勇んで開いてみると空!なぜ。どうやらログを取るような設定にしていないらしい。何かのマニュアルを読んで設定したのだけど、たぶん基本的な設定のみで特にログの記録なんていうものはすっ飛ばしていたのだろう。
そんなわけでsyslog辺りを探るわけですが、ありました、ありましたよ。ちょうどその時刻にばっちりエラー出てるんです。
Jul 3 22:21:04 myhost /etc/mysql/debian-start[1596]: /usr/bin/mysqlcheck: Got error: 1045: Access denied for user 'debian-sys-maint'@'localhost' (using password: YES) when trying to connect...わからない...。
Jul 3 22:21:04 myhost /etc/mysql/debian-start[1596]: FATAL ERROR: Upgrade failed
調べてみるとMySQLにスクリプトがログインする際に登録されているものを使うとログインできません!というエラーメッセージらしいのです。そのMySQLにログインしたがっているスクリプトというのが、debian-sys-maintさんという方です。彼は/etc/mysql/debian.cnfというファイルにパスワードを聞きにいってからログインしようとするのですが、どうやらそれができない...ということ。
debian-sys-maintさんのパスワードをちゃんと一致させておくとこういうエラーは起こらないです。
$ sudo grep password /etc/mysql/debian.cnf
password = <debian-sys-maintさんのパスワード>
$ mysql -u root -p
Enter password: < MYSQLのそのユーザーのパスワード>
...中略...
mysql> set password for 'debian-sys-maint'@'localhost'=password('<さっきのdebian-sys-maintさんのパスワード>');
Query OK, 0 rows affected (0.00 sec)
これで治った!



