2 日後、root アカウントで mysql に接続できなくなりました。他のアカウントでログインしても問題ありません。
最初は、サーバーがハッキングされ、誰かがパスワードを変更したのではないかと考えました。リセットしてみました。そのためには、mysqld_safe を使用する必要があったため、mysql を停止する必要がありましたが、失敗しました。
> sudo /etc/init.d/mysql stop
Stopping MySQL database server: mysqld failed!
> mysqld stop
InnoDB: Unable to lock ./ibdata1, error: 11
InnoDB: Check that you do not already have another mysqld process
InnoDB: using the same InnoDB data or log files.
130107 13:48:34 InnoDB: Unable to open the first data file
[...]
InnoDB: Error in opening ./ibdata1
130107 13:48:34 InnoDB: Operating system error number 11 in a file operation.
InnoDB: Error number 11 means 'Resource temporarily unavailable'.
InnoDB: Some operating system error numbers are described at
InnoDB: http://dev.mysql.com/doc/refman/5.1/...ror-codes.html
InnoDB: Could not open or create data files.
InnoDB: If you tried to add new data files, and it failed here,
InnoDB: you should now edit innodb_data_file_path in my.cnf back
InnoDB: to what it was, and remove the new ibdata files InnoDB created
InnoDB: in this failed attempt. InnoDB only wrote those files full of
InnoDB: zeros, but did not yet use them in any way. But be careful: do not
InnoDB: remove old data files which contain your precious data!
130107 13:48:34 [ERROR] Plugin 'InnoDB' init function returned error.
130107 13:48:34 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
mysqld: Too many arguments (first extra is 'stop').
MySQL は ibdata1 を読み取ることができなかったので、正しいように見えるアクセス許可を確認します。
> ls -l /var/lib/mysql/
-rw-rw---- 1 mysql mysql 18874368 Jan 7 12:39 ibdata1
-rw-rw---- 1 mysql mysql 5242880 Jan 7 13:05 ib_logfile0
-rw-rw---- 1 mysql mysql 5242880 Jan 7 13:05 ib_logfile1
ここで説明したようにファイルを移動してコピーしようとしましたが、成功しませんでした:
> mv /var/lib/mysql/ibdata1 /var/lib/mysql/ibdata1.bak
> cp -a /var/lib/mysql/ibdata1.bak /var/lib/mysql/ibdata1
これは my.cnf の一部です
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
LANGUAGE = /usr/share/mysql/english
skip-external-locking
データディレクトリは正しいです。
同様に、MySQL ステータスを取得しようとすると、次のようになります。
# sudo /etc/init.d/mysql status
/usr/bin/mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)'
このページでこの問題の解決策を見つけましたが、そのためには root ユーザーとしてログインする必要があり、それを行うことはできません。2つの問題がリンクしていると思います。
これを修正する方法を知っている人はいますか?これが原因で、仕事がブロックされています。
このメッセージを読んでいただき、また返信していただきありがとうございます。
良い1日を!