Linuxボックスにmysql-server
をインストールしましたが、rootパスワードを忘れました(おっと)。インターネットを見回してみると、一般的な方法は次のとおりです。
Sudo service mysql stop
)Sudo mysqld_safe --skip-grant-tables
)mysql -u root
)私の問題は2番にあります。コマンドを実行すると、デーモンのログ記録と起動に関するいくつかの情報が表示され、次の行で終了します。
mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
Sudo service mysql status
を使用すると、MySQLが実際に停止したことが確認されます。
なぜそんなに突然止まるのですか?そして(もっと重要なことに)パスワードをリセットできるように、どうすればそれを実行し続けることができますか?
前もって感謝します
[〜#〜] edit [〜#〜]これが「logginとデーモンの起動に関するもの」の完全なログです。
$ mysqld_safe --skip-grant-tables
141219 16:55:20 mysqld_safe Logging to syslog.
141219 16:55:20 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
141219 16:55:20 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
$
EDIT 2そして/ var/log/syslogの出力(ホスト名を<hostname>
に置き換えました)
Dec 20 10:20:09 <hostname> mysqld_safe: Starting mysqld daemon with databases from /var/lib/mysql
Dec 20 10:20:09 <hostname> mysqld: 141220 10:20:09 [Warning] Using unique option prefix key_buffer instead of key_buffer_size is deprecated and will be removed in a future release. Please use the full name instead.
Dec 20 10:20:09 <hostname> mysqld: 141220 10:20:09 [Warning] Can't create test file /var/lib/mysql/<hostname>.lower-test
Dec 20 10:20:09 <hostname> mysqld: 141220 10:20:09 [Warning] Can't create test file /var/lib/mysql/<hostname>.lower-test
Dec 20 10:20:09 <hostname> mysqld: #007/usr/sbin/mysqld: Can't change dir to '/var/lib/mysql/' (Errcode: 13)
Dec 20 10:20:09 <hostname> mysqld: 141220 10:20:09 [ERROR] Aborting
Dec 20 10:20:09 <hostname> mysqld:
Dec 20 10:20:09 <hostname> mysqld: 141220 10:20:09 [Note] /usr/sbin/mysqld: Shutdown complete
Dec 20 10:20:09 <hostname> mysqld:
Dec 20 10:20:09 <hostname> mysqld_safe: mysqld from pid file /var/run/mysqld/mysqld.pid ended
OK、/ var/lib/mysqlが存在しないか、mysqlユーザーにアクセスする権限がないようです。いずれにせよ、rootパスワードを忘れるよりも悪い問題があります。データベースがまったくないか、ファイルのアクセス許可や所有権が変更されています。
この問題は、いくつかの問題が原因で発生する可能性があります。正確なエラーは"tail /var/log/mysql/error.log"から見つけることができます。これらの種類の問題に対するデフォルトの修正を追加しました。以下が機能しない場合は、ログからの印刷を更新して、情報を取得してさらに進んでください。
次のコマンドを使用して、すべてのMySQLプロセスを強制終了します。
ps aux | grep mysql kill pid
"which mysqld_safe"コマンドを使用してmysqldデーモンのパスを見つけます
Mysqld_safeの場所からテーブルを付与せずにMySQLを起動します
/mysqld_safe_available_directory/mysqld_safe --skip-grant-tables &
ex/bin/mysqld_safe
mysql -u root
新しいパスワードを設定する手順:
use mysql;
update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root';
flush privileges;
quit
私は同じ問題に直面しました/var/lib/mysql
の許可からの中止フォルダはユーザーmysql
に属し、root
は完全にアクセスできません
それを解決した:
$ Sudo su - mysql
$ mysqld_safe --skip-grant-tables &