7

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日を!

4

0 に答える 0