“mysql 메인 프로세스를 생성하지 못했습니다 : 실행할 수 없습니다 : 해당 파일이나 디렉토리가 없습니다”


56

나는 MySQL의 초보자이기 때문에 나와 함께하십시오.

방금 11.10에서 12.04로 업그레이드를 완료했습니다.

딸꾹질없이 모든 것이 작동하는 것처럼 보였고 모든 소프트웨어 및 설정이 올바르게 작동합니다. MySQL과는 별도로.

내가 시도 할 때 :

sudo start mysql

오류가 발생합니다.

start: Job failed to start

문제가 무엇인지 진단 할 수있는 곳은 어디입니까? 그리고 (희망적으로)-어떻게 분류합니까?

(필자 가 중요하다면 여기에서 조언을 따르는 자동 시작을 비활성화했습니다 )


업데이트 1 :

두 가지 출력 :

cat /var/log/mysql.err 
cat /var/log/mysql.log

비어 있습니다.

출력 dmesg | grep mysql:

[ 1401.785141] type=1400 audit(1335619832.181:25): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/mysqld" pid=16165 comm="apparmor_parser"
[ 1401.791089] init: Failed to spawn mysql main process: unable to execute: No such file or directory

업데이트 2 :

아래 AWinter에서 알 수 있듯이 업그레이드 후 MySQL이 자동으로 사라져서 다시 설치 해야하는 것으로 보입니다.

답변:


48

mysql-server-5.1 패키지가 제거되었는지 확인하십시오. 업그레이드 후에도 지속될 수 있습니다. 동일한 오류가 발생하여 MySQL 서버 5.1 및 5.5를 제거 한 다음 다시 설치해야했습니다.

먼저 / var / lib / mysql / 디렉토리를 안전하게 백업하십시오.

sudo cp -R /var/lib/mysql/ ~/mysql

다음으로 MySQL을 제거하십시오 (이는 php5-mysql 및 phpmyadmin과 다른 많은 라이브러리를 제거하므로 이후에 일부 항목을 다시 설치할 준비를하십시오.

sudo apt-get purge mysql-server-5.1 mysql-common

/ etc / mysql / 폴더를 제거하고 그 내용

sudo rm /etc/mysql/ -R

다음으로 이전 데이터베이스 파일이 여전히 / var / lib / mysql /에 있는지 확인하십시오. 그렇지 않은 경우 파일을 폴더에 다시 복사 한 다음 루트를 루트로 만드십시오.

(파일이 더 이상없는 경우에만 실행하십시오)

sudo mkdir /var/lib/mysql/
sudo chown root:root /var/lib/mysql/ -R
sudo cd ~/mysql/
sudo cp * /var/lib/mysql/ -R

다음으로 MySQL 서버 설치

sudo apt-get install mysql-server

마지막으로 phpmyadmin 및 php5-mysql과 같은 누락 된 패키지를 다시 설치하십시오.


1
우수한. 매력으로 일했다. 모두 다시 작동합니다. 참고 사항 :이 디렉토리를 제거 할 필요가 없었 sudo rm /etc/mysql/ -R습니다. 내 경우에는 단순히 존재하지 않았습니다. 어쨌든-다행히도 그것은 Wordpress를 테스트하기위한 로컬 설치 일뿐입니다. 실제 서버에서 어떤 일이 일어날 지 궁금합니다. o_O
radek

apt-get --reinstall 설치 mysql-server-xx가 나를 위해 일했습니다.
야시마

이것은 나를 위해 일했지만 apt-get updatedovecot와 php5-mysql을 제거했기 때문에 아마도 미리 처리해야했을 것입니다 . 업데이트 후에 만 ​​다시 설치할 수 있습니다. 내가 한 후에 모든 것이 다시 잘 작동했습니다.
AntonChanning

나는 -bash: cd: /var/lib/mysql/: Permission denied사용 sudo -i하고 작동하지 않습니다.
Charlotte

@LittleBigBot 나는 그것을 고쳐야 할 변화를 만들었다.
AWinter


12

나는 똑같은 문제를 겪었고 InnoDB 로그 파일은 mysql이 예상했던 것과 다른 크기이며 업그레이드 중에 자동으로 실패했습니다.

12.04로 업그레이드 할 때 로그 파일 크기를 기본 구성 이외의 것으로 설정하는 사용자 지정 구성 파일이 삭제되었습니다.

파일을 제거해야합니다. / var / lib / mysql / ib_logfile *

파일이 사라지면 mysql은 이제 기본 크기의 새로운 로그 파일을 시작하고 만들 수 있습니다.


빙고. 우리의 경우 개발자는 innodb에 대한 일부 구성 설정을 변경했습니다 (그리고 그도 내가 문제를 일으킬 수 있음을 알지 못했습니다). 이로 인해 mysql이 시작되지 않았습니다. 해당 구성 파일을 삭제하면 MySQL을 시작할 수 있습니다.
gaoshan88

빙고-innodb_log_file_size의 구성 설정을 변경했습니다.
tweak2

9

자세한 비 데몬 모드로 서버를 시작하고 출력을 보면 대부분의 오류가 표시됩니다.

sudo mysqld --verbose

7

나는 같은 문제가 있었지만 위의 답변 중 어느 것도 도움이되지 못했습니다. 마지막 희망으로 디스크 공간을 확보하려고했습니다. / var / log에서 불필요한 로그 파일을 제거하여 2.5G 공간을 확보했습니다. 그런 다음 MySQL이 정상적으로 시작되었습니다.


그래, 이것도 내 문제였다. 부팅하는 동안 mysql이 시작되지 않았습니다. 나중에 터미널에 렌더링하는 시스템 정보입니다. "/ 사용 : 95.1 %"따라서 mysql (및 다른 프로세스)을 시작할 여유 공간이 충분하지 않았습니다. 파일 정리가 필요했고 mysql은 문제없이 시작되었습니다.
Screenack

이것이 나의 경우였다. 디스크 정리 및 MySQL이 작동하기 시작합니다.
Sergey Romanov

5

이것은 때때로 발생하며 mysql을 시작하지 못하게 할 수있는 몇 가지 다른 문제가 있지만 여기서 내가 아는 가장 일반적인 문제 중 일부를 작성합니다.

참고-가장 일반적인 문제를 설명하기 때문에 이미 mysql 서비스를 제거하고 설치하거나 단순히 다시 설치하려고했다고 가정합니다.

설치하려면- sudo apt-get install mysql-server mysql-client
제거 하려면- 제거 sudo apt-get remove mysql-server mysql-client
하려면 (파일 제거 + 구성)- sudo apt-get purge mysql-server mysql-client
다시 설치하려면-sudo apt-get install --reinstall mysql-server mysql-client

  1. my.cnf파일이 기본 디렉토리에 없습니다. (기본적으로) /etc/my.cnf또는 중 하나에 있어야합니다 /etc/mysql/my.cnf.

  2. mysql 데이터 파일이있는 하드 드라이브에 충분한 공간이 없습니다. 데이터베이스가 너무 커지고 하드 드라이브의 100 %를 차지하면 서비스가 실패합니다.

  3. 업그레이드 후 my.cnf파일이 올바른 위치에 있는지 확인하십시오 . 업그레이드 방법 또는 업그레이드 한 버전에 따라 이전에 언급 /etc/my.cnf했거나 /etc/mysql/my.cnf언급 했을 수 있습니다 . 또한 파일 이름 mysql.conf뿐만 아니라 이름도 지정할 수 있습니다 my.cnf. mysql.com 에서 바이너리를 다운로드 한 경우에 발생합니다 .

  4. 을하는 것은 dmesg그것이 로딩 오류를 제공하기 때문에 오류 메시지 도움으로 MySQL의 서비스를 던지고 있는지 확인합니다. 왜 이런 일이 일어나고 있는지 말할 수도 있습니다. dmesg터미널에 혼자 입력 하면 세상을 보여줄 것입니다. 우리가 원하는 것은 mysql에 대한 정보이므로 다음과 같이하십시오 : dmesg | grep mysqlmysql을 포함하는 모든 줄을 던질 것입니다.

  5. my.cnf또는 mysql.conf파일이 올바른지 확인 하십시오. 12.04에서 MySQL은 버전 5.5이고 11.10에서는 버전 5.1입니다. conf 파일에 약간의 변화가있을 수 있으며 (실제로 확인하지는 않았 음) 어리석게 들릴 수도 있지만 문제가 발생할 수 있습니다.

  6. 소켓 문제 와 관련된 오류는 일반적으로 파일 my.cnf또는 mysql.conf잘못된 장소를 가리키는 파일 의 오류이며 오류는 일반적으로 다음과 같이 표시됩니다.

    소켓 '/var/run/mysqld/mysqld.sock'을 통해 로컬 MySQL 서버에 연결할 수 없습니다

    이 문제의 다른 소스는 시스템의 실제 mysql에 필요한 스크립트보다 오래된 스크립트를 사용하기 때문에 잘못된 폴더를 가리키는 mysql파일 과 관련 /etc/init.d이 있습니다 (정확하게 업데이트되지 않았거나 덮어 쓰지 않았을 수 있음) 구성 파일 등). 따라서이 두 파일 중 하나를 편집하고 다른 곳을 가리키는 지 sudo service mysql restart확인한 다음 작동하는지 확인하십시오.

  7. mysql의 오류 특정 출력을 더 잘 보려면 다음을 수행하십시오.

    cat /var/log/mysql.err-mysql 오류가 표시됩니다. 나는 이런 식으로 만들 것입니다 cat /var/log/mysql.err | less당신은 너무 많은 정보가 있기 때문에 지나갈 볼 일어나는 경우에 less당신의 출력을 통해 귀하의 방법을 스크롤 도움이 될 것입니다 cat.

    동일은 간다 cat /var/log/mysql.log이 빠른 답변 도움이 될 것입니다 주석 질문 또는로 넣어 아마 거기에 오류가 발생하면.

  8. 연결 문제와 서비스가 실제로 실행되고있는 경우 서버의 방화벽이 3306 포트 (수신 연결)를 통한 연결을 허용하는지 확인하십시오. 이후 라우터 (해당되는 경우)가 포트 3306을 차단하지 않았는지 확인하십시오. 기본적으로 네트워크 테스트를 수행하여 mysql에 할당 된 포트와 관련된 문제가 어디서 발생했는지 확인하십시오.

모든 것이 좋으면 mysql 서비스가 실행 중인지 테스트하십시오. service mysql status

최후의 수단으로. mysql을 실행 중이지만 로그인 할 수없는 경우 다음을 시도하십시오.

  1. MySQL 서버를 중지하십시오.

    sudo /etc/init.d/mysql stop 또는 sudo service mysql stop

  2. mysqld수동 구성으로 수동으로 서비스 시작

    sudo mysqld --skip-grant-tables &

    (&를 추가하면 다른 터미널을 열어야합니다. &는 프로세스를 백그라운드로 보내고 동일한 터미널을 사용하여 종료 할 수 있습니다).

  3. mysql 데이터베이스에 ROOT 로 로그인

    mysql -u root mysql

  4. MyPASSWORD 를 새 비밀번호로 바꾸어 다음을 입력하십시오.

    UPDATE user SET Password=PASSWORD('MyPASSWORD') WHERE User='root';
    FLUSH PRIVILEGES;
    EXIT;

이것은 루트로 Mysql 서비스에 다시 로그인하기에 충분해야합니다. 도움이 되길 바랍니다.


신속한 피드백에 감사드립니다. /etc/mysql/my.cnf내 경우에는 my.cnf 파일이 있습니다. 올바른 위치입니까? dmesg내 이해력을 초월한 출력을 제공합니다 : / 실제로 5.1이 설치되어 있습니다.
radek

1
파일을 찾으면 위치에 대해 걱정하지 마십시오. dmesg의 mysql 출력을 더 잘 볼 수 있도록 답변을 업데이트하겠습니다.
Luis Alvarado

4

Ubuntu Server 12.04 LTS로 업그레이드 한 후 동일한 문제가 발생했습니다.

sudo apt-get install mysql-server 

그것은 spotweb의 오래된 데이터베이스에 대해 불평했지만 그것을 고치기에 충분했습니다. spotweb을 제거하여 수정했습니다.

sudo apt-get purge spotweb

그리고 mysql을 재구성 :

sudo dpkg-reconfigure mysql-server-5.5

4

누군가 비슷한 문제가 발생하는 경우에 이것을 추가 할 것입니다. 모든 제거 및 재설치를 시도했지만 아무 소용이 없습니다. 해결책을 찾는 핵심은 upstart가이 폴더에 오류 로그를 저장한다는 것입니다.

/ var / log / upstart /

MySQL을 위해

/var/log/upstart/mysql.log

내가 열었을 때이 메시지가

15 행의 /etc/apparmor.d/tunables/global에서 /etc/apparmor.d/usr.sbin.mysqld에 대한 AppArmor 구문 분석기 오류 : 'tunables / home'을 열 수 없습니다.

나는에서 보았을 때 /etc/apparmor.d/tunables/의 폴더 내가 그에서 집 파일을 잃어버린 그래서 하나를 만들어

gedit /etc/apparmor.d/tunables/home을 입력하고 주석이없는 행이있는 다른 컴퓨터에서 내용을 복사했습니다.

@ {HOME} = @ {HOMEDIRS} / * / / root /

@ {HOMEDIRS} = / home /

누군가 여기 비슷한 문제에 직면

https://bugs.launchpad.net/ubuntu/+source/mysql-5.5/+bug/982303

그 후 서비스를 다시 시작할 수있었습니다.



1

업그레이드 후 mysql-server / mysql-server-5.5가 설치되지 않았으며 5.1도 발견되지 않았습니다. my.cnf의 이름을 my.cnf_old로 바꾸고 mysql-serven을 설치하려고했습니다. 설치하는 동안 루트 비밀번호를 설정할 수 없다는 오류 메시지가있었습니다. 이 후 구성, 의류 등을 확인했습니다. 모두 괜찮은 것 같았습니다. 다음 시도는 mysql-server를 재구성하는 것이었지만 패키지가 완전히 설치되지 않았다고 불평했습니다. 그래서 나는 제거하기로 결정 했고이 apt-get 중에 패키지를 수정했으며 이제는 작동합니다. 나는 아무것도 바꾸지 않았기 때문에 이유를 모른다.


1

나는 비슷한 문제를 겪었지만 신속하게 apparmor로 추적되어 이전에 나 에게이 문제를 주었다는 것을 기억했다.

이러한 설정을 변경하고 시스템이 apparmor를 사용하는 경우 /etc/apparmor.d/usr.sbin.mysqld도 조정해야합니다. 예 : 이 행들이 추가되었습니다 (my.cnf에 대한 심볼릭 링크를 허용하고 심볼릭 링크 된 파일을 읽을 수 있도록) :

/ usr / sbin / mysqld {... /etc/mysql/*.cnf lr, /path/to/symlinked/my.cnf r, ...}


1

필자의 경우 Ubuntu 12.04를 새로 설치하여 MySQL을 설치하려고했지만 'root'사용자의 암호를 설정하는 데 오류가 발생한 이유를 이해하지 못했습니다. 위의 모든 솔루션을 시도했지만 할 일이 없습니다.

그런 다음 모든 것을 제거 / 제거하기로 결정하고 MySQL 서버를 제거하고 모든 폴더 (/ etc / mysql / 및 / var / lib / mysql /)를 제거하기로 결정했습니다. 다시 설치하고 암호를 설정하고 서버 인스턴스를 시작할 수있었습니다.


0

터미널에서 다시 설치하고 my.cnf를 실행하게하려면 다음을 입력하십시오.

sudo apt-get install mysql-server-5.1
sudo apt-get --reconfigure mysql-server-5.1
sudo apt-get update
sudo start mysql my.cnf

이 방법으로 작동 할 수 있습니다.


0

나는 추가 문제가 오전 performance_schema아래 [mysqld]에서 /etc/mysql/my.conf원인이 실패합니다. 해당 줄을 제거하고 mysql을 다시 시작할 수있었습니다.

편집 : 1 램의 공연만으로는 performance_schema가 활성화 된 상태에서 mysqld를 시작하기에 충분하지 않습니다. 나는 3 기가에 부딪 쳤고 잘 작동했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.