mysql이 bash_completion 오류를 시작할 수 없습니다.

mysql이 bash_completion 오류를 시작할 수 없습니다.

따라서 데비안 시스템을 업그레이드한 후 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 쉘이 아니지만(현대 데비안에서는 거의 확실히 대시임) bash 스크립트를 얻으려고 한다고 알려줍니다. 따라서 당신이 대답해야 할 질문은 bash가 아닌 쉘이 bash_completion 스크립트를 얻으려고 시도하는 이유입니다. 문제는 mysql사용자 홈 디렉토리에 있는 도트 파일 중 하나 에 있는 것 같습니다 .

다음을 실행해 보세요.

grep bash_completion ~mysql/.*

그것이 어느 것인지 알아보세요. 내 추측으로는 .profilemysql 사용자의 홈 디렉토리에 있는 누군가가 자신이 속한 쉘이 bash인지 확인하지 않고 bash 명령을 실행하려고 시도하고 있는 것 같습니다.

또는 작업을 다시 시작하고 실행하는 가장 간단한 수정 방법은 /bin/sh를 대시 대신 bash로 전환하는 것입니다. ~에 따르면https://wiki.debian.org/DashAsBinSh다음 명령을 실행하여 이 작업을 수행할 수 있습니다.

sudo dpkg-reconfigure dash

그리고 화면에 나타나는 지시에 따라 /bin/sh를 다시 bash로 설정하세요.

관련 정보