« MySQL | メイン | ZIPがダウンロードできない? »

2005年01月06日

ネットワークの構築:: MySQLの復旧

    

MySQLへアクセスできないので、いろいろと調べる。
まず、パスワードをなくしたい。
いろいろ調べて /etc/shadow にパスワードが保存されていることがわかった。
shadow のManページで意味を見る。
cryptで暗号化されたパスワードと思われるものが、mysqlユーザーには設定されていた。
PostgreSQLを真似て、パスワードを!!に変更。
で、再起動。
まだアクセスできない。

mysql とコンソールで入力した時に表示されるメッセージと、
ERROR 2002 (HY000): Can't connect to local MySQL server through socket 'ソケットファイル名' (111)
を手がかりに、"Can't connect to local MySQL server through socket" で検索する。
このページがほぼそのままのことを書いている。
1番目にMySQLが起動していない可能性を指摘している。
ps axで見ると、mysqlはない。でも、ps ax | grep mysql とやると出てくる。
なんだろう? よくわからない。
で、ふとsafeモードみたいなのがあったのを思い出し、適当にコマンドを打つがわからない。
MySQL install で、mysqladmin version と入力するのがあったので、やってみると、同じエラーメッセージが表示された。
どうやら、起動していないようだ。
で、whereis mysqladmin として、mysqladminがある場所を調べると、同じディレクトリにmysqld_safe と言うのがあった。
これか!
で、mysqld_safeと入力。
"STOPPING server from pid file /var/run/mysqld/mysqld.pid"
と表示され、終了してしまった。
前述のページにエラーログのことが書かれていたので、エラーログを見てみることにした。
/var/log/mysqld.log がそのログみたいだ。
見てみると、
Operationg system error number 13 in a file operation.
The error means mysqld does not have the access rights to the directory.
File name ./ibdata1
File operation call: 'open'.
Cannot continue operation.
とある。
つまり、access rights がないのか。
で、指摘されたファイル /var/lib/mysql/ibdata1 を見てみる。
なぜか、所有者がrootになっていた。
いつの間に。
他にもいくつか所有者が変わっているファイルがあったので、所有者とグループをmysqlに変更した。
で、再び、mysqld_safe。
コンソールがそのままになった。そうか、別プロセスで起動させるとかなんとかのコマンドでやらないといけなかったのか。
仕方ないので、コンソールをいったん閉じて、再び開き、ps axで見ると、mysqld_safeが立ち上がっていた。
mysql -u root -p でアクセスすると、きちんとアクセスできた。
再起動しても、きちんと起動するかどうかを確認するため再起動。
問題なくアクセスできた。
なんか、無駄に苦労したような気がしないでもないけど、うまく動くようになって良かった良かった。



投稿者 Takenori : 2005年01月06日 12:29




comments powered by Disqus
Total : Today : Yesterday : なかのひと