MySQL 5.6과 SELinux가 논쟁을 벌이고 있습니다.

MySQL 5.6과 SELinux가 논쟁을 벌이고 있습니다.

CentOS 6.4(x64) / MySQL 5.6.10

소스 파일에서 MySQL을 설치하고 원래 위치(/var/lib/mysql)에서 정상적으로 시작했습니다. 모든 것을 다른 볼륨(/u0/mysql)으로 옮겼고 SELinux에서 몇 차례 면제했습니다( cat /var/log/audit/audit.log | audit2allow -M mysql-*뒤에 semodule -i mysql-*.pp). 이 작업이 끝날 때마다 서비스를 다시 시작하려고 하는데 다음 오류가 표시됩니다.

Starting MySQL..The server quit without updating PID file (/u0/mysql/server.pid).
 [FAILED]

3~4번의 면제 추가 후에 파일이 더 이상 변경되지 않는 것을 확인했습니다. IE에서는 이런 방식으로 추가할 수 있는 모든 것이 이미 추가되었습니다. 호기심에 달려가서 audit2why -a다음과 같은 것들을 얻었습니다.

type=AVC msg=audit(1387207317.009:666): avc:  <some permission> for  pid=20640 
  comm="mysqld" dev=sdc1 ino=36831373 scontext=unconfined_u:system_r:mysqld_t:s0 
  tcontext=system_u:object_r:default_t:s0 tclass=file
 Was caused by:
     Unknown - would be allowed by active policy
     Possible mismatch between this policy and the one under which the audit message was generated.
     Possible mismatch between current in-memory boolean settings vs. permanent ones.

이것이 나로 하여금 그것을 믿게 만든다.~해야 한다일하고 있어. SELinux를 비활성화하면 setenforce 0mysql이 정상적으로 시작되므로 (SE)가 여전히 방해가 됩니다.

SF를 검색해 보니이것up - 결과에 변화가 없이 시도해 보았습니다.

SO: 막힌 곳이 어디인지 어떻게 알 수 있나요?

편집하다:

[root@server u0]# ls -ldZ /var/lib/mysql
drwxr-xr-x. mysql mysql unconfined_u:object_r:mysqld_db_t:s0 /var/lib/mysql

[root@server u0]# ls -ldZ /u0/mysql
drwxr-xr-x. mysql mysql unconfined_u:object_r:mysqld_db_t:s0 /u0/mysql

답변1

새 디렉토리의 보안 컨텍스트를 /var/lib/mysql과 동일하게 변경해야 합니다.

예를 들어:

ls -ldZ /var/lib/mysql/
drwxr-x--x. mysql mysql system_u:object_r:mysqld_db_t:s0 /var/lib/mysql/

그런 다음 chcon을 사용하여 새 디렉토리를 동일한 설정으로 변경하십시오.

chcon -R -u system_u -r object_r -t mysqld_db_t /u0/mysql

답변2

다음과 같이 시도해 볼 수도 있습니다.

chcon --reference=/path/to/existing/file /path/to/new/file

그런데, 여기 SELinux에 대한 훌륭한 소개가 있습니다:http://www.youtube.com/watch?v=MxjenQ31b70Redhat 2012 Summit에서. 또한 로그 파일에서 /var/log/audit/audit.log또는 의 오류 메시지를 찾아보세요 /var/log/messages.

관련 정보