MySQL이 / tmp에 쓸 수 없어 다시 시작하지 못했습니다.


11

orthomcl을 사용 하는 프로그램을 실행 중이었습니다 mysql. 이 프로그램은 전에 같은 컴퓨터에서 정상적으로 작동했습니다. 이번에는 오류 메시지가 나타납니다.

DBD::mysql::st execute failed: Can't create/write to file '/tmp/#sql_700_1.MYI' (Errcode: 13) at /usr/local/bioinf/orthomclSoftware-v2.0.9/bin/orthomclPairs line 709, <F> line 14.

mysql서버 를 다시 시작하려고했지만 서버가 종료되었지만 시작하지 못했습니다.

sudo service mysql start
start: Job failed to start

/var/log/mysql/error.log그리고 /var/log/mysql.err비어 있습니다. 에서 제거 및 재설치 mysql-server및 제거 ib_logfile*를 포함하여 여기에서 찾은 몇 가지를 시도 했습니다 /var/lib/mysql.

내가 시도한 다른 것은

sudo dpkg-reconfigure mysql-server-5.5

오류 메시지는 다음과 같습니다.

/usr/sbin/mysqld: Can't create/write to file '/tmp/ibNzqwO0' (Errcode: 13)
InnoDB: Error: unable to create temporary file; errno: 13
[ERROR] Plugin 'InnoDB' init function returned error.
[ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
[ERROR] Unknown/unsupported storage engine: InnoDB
[ERROR] Aborting

다음은 몇 가지 정보입니다 dmesg | grep mysql.

[3115187.338273] init: mysql main process (44255) terminated with status 1
[3115187.338417] init: mysql main process ended, respawning
[3115187.356361] init: mysql post-start process (44256) terminated with status 1
[3116827.473256] type=1400 audit(1396394069.224:132): apparmor="DENIED" operation="open" parent=45387 profile="/usr/sbin/mysqld" name="/home/tmp/" pid=45396 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=0 ouid=0
[3116827.582489] type=1400 audit(1396394069.332:133): apparmor="DENIED" operation="mknod" parent=45387 profile="/usr/sbin/mysqld" name="/home/tmp/#sql_b154_0.MYI" pid=45402 comm="mysqld" requested_mask="c" denied_mask="c" fsuid=0 ouid=0
[3116827.908448] type=1400 audit(1396394069.660:134): apparmor="DENIED" operation="mknod" parent=45317 profile="/usr/sbin/mysqld" name="/home/tmp/ibbPfaqP" pid=45415 comm="mysqld" requested_mask="c" denied_mask="c" fsuid=118 ouid=118
[3116841.623608] type=1400 audit(1396394083.372:139): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/mysqld" pid=45443 comm="apparmor_parser"
[3116841.771621] init: mysql pre-start process (45474) terminated with status 1

이와 같은 많은 줄이있었습니다.

MySQL 서버에 어떤 문제가 있는지 알아낼 수있는 사람이 있습니까?

많은 감사합니다.

답변:


15

그 이유는 귀하 /tmp가 다른 위치와 연결되어 있기 때문입니다 /home/tmp. 그러나 MySQL은 AppArmor에 의해 무장되어 자유롭게 쓰기를 허용하지 않습니다 /home/tmp. 상황을 해결하기 위해를 편집하고 적절히 /etc/apparmor.d/abstractions/user-tmp추가 할 수 있습니다 /home/tmp. 나를 위해 여분의 라인

  owner /home/tmp/**    rwkl,
  /home/tmp/            rw,

트릭을했다.


1
완전한! 문제를 즉시 해결했습니다. 나는 그것이 심볼릭 링크와 관련이 있다고 확신했다!
YonoRan

1
변경 사항을 적용하려면 의류를 다시 시작해야했습니다.sudo /etc/init.d/apparmor restart
Nadjib Mami

6

에 대한 올바른 권한이없는 것 같습니다 /tmp. 다음 명령으로 문제를 해결할 수 있습니다.

sudo chmod 1777 /tmp

그러면 권한이 777(모든 사람을위한 rwx)로 설정되고 /tmp디렉토리에 권장되는 고정 비트도 설정 됩니다. 에 설명 된대로 man chmod:

제한된 삭제 플래그 또는 끈적한 비트

제한된 삭제 플래그 또는 고정 비트는 단일 비트이며 해석은 파일 유형에 따라 다릅니다. 디렉토리의 경우 권한이없는 사용자가 파일이나 디렉토리를 소유하지 않는 한 디렉토리에서 파일을 제거하거나 이름을 바꾸는 것을 방지합니다. 이것을 디렉토리에 대한 제한된 삭제 플래그라고하며, 일반적으로 / tmp와 같은 쓰기 가능한 디렉토리에 있습니다. 일부 구형 시스템의 일반 파일의 경우 비트는 프로그램의 텍스트 이미지를 스왑 장치에 저장하므로 실행시 더 빨리로드됩니다. 이것을 끈적 끈적한 비트라고합니다.


@ScottSeverance는 변경을 위해 코드를 따옴표로 변경하지 마십시오. 그렇습니다. 인용 부호는 알고 있지만 코드 블록은 더 나은 서식을 제공하고 헤더와 들여 쓰기를 존중합니다. 당신이 그것을 편집 한 방식으로 모든 것이 같은 줄에 있습니다.
terdon

1
코드로 포맷 할 때 일정한 가로 스크롤없이 휴대 전화에서 읽을 수 없기 때문에 변경했습니다. 따옴표를 코드로 형식화하면 실제로 이점이 없습니다. 제목이 같은 회선에있는 것을 좋아하지 않는 경우 전화기의 사용자 표시를 손상시키지 않으면 서이를 수정하는 방법이 있습니다.
Scott Severance

@ScottSeverance 아, 공정한, 나는 그것이 전화에 문제를 일으키는 것을 깨달았다. 좋아요, 그럼 따옴표 블록에 넣겠습니다. 일반 브라우저에서 편집 내용 (설명없이)이 더 나빠 보이고 올바르게 렌더링되는지 확인하지 않았기 때문에 화가났습니다. 그리고 당신은 다시 편집하고 완벽합니다, 감사합니다!
terdon

1
내 것이 올바른 해결책입니다. MySQL은 Apparmored되고 Apparmor는 confs /tmp를 변경하지 않고 다른 위치로 이동하는 것을 좋아하지 않습니다. 감사는 파일 시스템에 대한 권한 거부 문제가 아니라 의류 보호자임을 지적합니다.
Antti Haapala
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.