したがって、Debian システムをアップグレードした後、mysql は「service mysql start」コマンドで起動しなくなります。私は得る:
Job for mysql.service failed. See 'systemctl status mysql.service' and 'journalctl -xn' for details. linksys:/home/users/stan# journalctl -xn
-- Logs begin at Mon 2014-07-28 10:03:56 PDT, end at Mon 2014-07-28 12:07:07 PDT.
-- Jul 28 12:07:07 linksys mysql[5509]: -su: 89: /usr/share/bash-completion/bash_completion: complete: not found
Jul 28 12:07:07 linksys mysql[5509]: -su: 92: /usr/share/bash-completion/bash_completion: complete: not found
Jul 28 12:07:07 linksys mysql[5509]: -su: 101: /usr/share/bash-completion/bash_completion: Syntax error: "(" unexpected (expec
Jul 28 12:07:07 linksys su[5536]: pam_unix(su:session): session closed for user mysql
Jul 28 12:07:07 linksys systemd[1]: mysql.service: control process exited, code=exited status=2
Jul 28 12:07:07 linksys systemd[1]: Failed to start LSB: Start and stop the mysql database server daemon.
-- Subject: Unit mysql.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit mysql.service has failed.
/etc/init.d/mysql
mysqlを起動するコマンドは次のとおりです。su - mysql -s /bin/sh -c "/usr/bin/mysqld_safe > /dev/null 2>&1 &"
しかし、bash_completionエラーがより多く発生します。
-su: 29: /usr/share/bash-completion/bash_completion: [[: not found
-su: 35: /usr/share/bash-completion/bash_completion: [[: not found
-su: 51: /usr/share/bash-completion/bash_completion: shopt: not found
-su: 57: /usr/share/bash-completion/bash_completion: complete: not found
-su: 62: /usr/share/bash-completion/bash_completion: complete: not found
-su: 65: /usr/share/bash-completion/bash_completion: complete: not found
-su: 68: /usr/share/bash-completion/bash_completion: complete: not found
-su: 71: /usr/share/bash-completion/bash_completion: complete: not found
-su: 74: /usr/share/bash-completion/bash_completion: complete: not found
-su: 77: /usr/share/bash-completion/bash_completion: complete: not found
-su: 80: /usr/share/bash-completion/bash_completion: complete: not found
-su: 83: /usr/share/bash-completion/bash_completion: complete: not found
-su: 86: /usr/share/bash-completion/bash_completion: complete: not found
-su: 89: /usr/share/bash-completion/bash_completion: complete: not found
-su: 92: /usr/share/bash-completion/bash_completion: complete: not found
-su: 101: /usr/share/bash-completion/bash_completion: Syntax error: "(" unexpected (expecting "}")
/var/log/mysql/ にはログはありません。どんなアイデアがありますか?
答え1
この行は:
-su: 29: /usr/share/bash-completion/bash_completion: [[: not found
/bin/sh は bash シェルではありませんが(現代の Debian ではほぼ確実にダッシュです)、bash スクリプトを取得しようとしています。したがって、あなたが答えるべき質問は、bashではなくシェルがbash_completionスクリプトを取得しようとする理由です。問題は、mysql
ユーザーのホームディレクトリにあるドットファイルの1つにあるようです。
以下を実行してみてください。
grep bash_completion ~mysql/.*
それがどれであるかを調べてください。私の推測では、.profile
mysqlユーザーのホームディレクトリにある誰かが自分が属するシェルがbashであることを確認せずにbashコマンドを実行しようとしているようです。
あるいは、ジョブを再起動して実行する最も簡単な修正方法は、/bin/sh をダッシュではなく bash に切り替えることです。 ~によるとhttps://wiki.debian.org/DashAsBinSh次のコマンドを実行してこれを実行できます。
sudo dpkg-reconfigure dash
そして、画面に表示される指示に従って/bin/shをbashに戻します。