mysqlはbash_completionエラーを開始できません。

mysqlはbash_completionエラーを開始できません。

したがって、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/mysqlmysqlを起動するコマンドは次のとおりです。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/.*

それがどれであるかを調べてください。私の推測では、.profilemysqlユーザーのホームディレクトリにある誰かが自分が属するシェルがbashであることを確認せずにbashコマンドを実行しようとしているようです。

あるいは、ジョブを再起動して実行する最も簡単な修正方法は、/bin/sh をダッシュ​​ではなく bash に切り替えることです。 ~によるとhttps://wiki.debian.org/DashAsBinSh次のコマンドを実行してこれを実行できます。

sudo dpkg-reconfigure dash

そして、画面に表示される指示に従って/bin/shをbashに戻します。

関連情報