apparmor: mysql 권한 - 최근 변경사항 없음

apparmor: mysql 권한 - 최근 변경사항 없음

업데이트: 이제 내 문제가 손상된 데이터베이스라는 것을 알고 있지만 그것을 식별하는 것은 약간 까다로웠습니다. 의류가 예상보다 오랫동안 원인인 것 같았습니다.

내가 처음 게시했을 때 눈치채지 못한 것은 mysql을 불평 모드로 설정하고 의류 stopteardown명령을 보낸 후에도 내 syslog에 여전히 의류 메시지가 표시된다는 것입니다... 보호 계층에 대한 비합리적인 두려움이 더욱 악화되고 있습니다. 여전히 어떻게 이런 일이 발생했는지 잘 모르겠습니다. 마침내 의류에서 mysql을 분리했지만 여전히 자체 파일을 잠글 수 없습니다. 그래서 데이터베이스가 손상되었습니다. 젠장. 내 백업이 새 서버에서 제대로 실행되고 있습니다.

초기 게시물:

MySQL 서버는 (나는생각하다)의복이 있지만 어찌할 바를 모르고 이유/방법을 판단할 수 없습니다. 나는 의류에 대해 잘 알지 못한다.

나는 적어도 두 가지 이유 때문에 의류를 제거해서는 안 된다는 것을 알고 있지만 그것에 대해 생각하지 않을 만큼 욕설을 충분히 사용했습니다(그리고 질문에 너무 많은 시간을 주었습니다). 바라건대 나는 간단한 것을 놓치고 여기서 배울 수 있기를 바랍니다.

정전은 오늘 시작되었으며 시스템 변경은 발생하지 않았습니다. MySQL 오류 로그는 권한을 애도합니다.

Can't open and lock privilege tables: Table 'servers' is read only

이 문제가 발생했으며 현재 기본 데이터베이스 저장소를 이동하지 않는 사람을 찾을 수 없습니다. 저도 2년 전에 이사했어요. 의상 구성은2014/04/21 이후 변경사항 없음:

/files/bak/tmp/ rw,
/files/bak/tmp/* rwk,
/files/bak/mysql/ rw,
/files/bak/mysql/** rwk,

파일 시스템 권한을 확인했습니다.

# find mysql/ -type d -exec chmod 700 {} \;
# find mysql/ -type f -exec chmod 660 {} \;
# chown -R mysql: mysql 

apparmor를 다시 로드하고, apparmor-utils를 설치하고, mysql을 푸시하여 불평합니다.

# aa-complain mysql
# apparmor_status
apparmor module is loaded.
5 profiles are loaded.
4 profiles are in enforce mode.
   /sbin/dhclient
   /usr/lib/NetworkManager/nm-dhcp-client.action
   /usr/lib/connman/scripts/dhclient-script
   /usr/sbin/tcpdump
1 profiles are in complain mode.
   /usr/sbin/mysqld
1 processes have profiles defined.
0 processes are in enforce mode.
0 processes are in complain mode.
1 processes are unconfined but have a profile defined.
   /sbin/dhclient (495)

...하지만 syslog를 보면 여전히 의류가 mysql을 차단하고 있는 것으로 표시됩니다 service mysql start.

apparmor="STATUS" operation="profile_replace" name="/usr/sbin/mysqld" pid=13899 comm="apparmor_parser"

의류 문제를 발견하기 전에 백업에서 데이터베이스를 복원하려고 시도했지만 쓰기 권한도 실패했습니다.

Can't create/write to file '/files/bak/mysql/dbCooper/wp_cb_contact_form.MYI'

파일 시스템이 "rw"인지 확인했습니다(어쨌든 위의 방법은 find -exec실패하지만).

mount
/dev/xvdf on /files/bak type ext4 (rw,noatime)

의류를 중지하려고 시도했지만 can't open and lock privilege tables이후에도 syslog가 계속 표시됩니다.

# service apparmor stop
  [...redacted teardown msg...]
# /etc/init.d/apparmor teardown
  * Unloading AppArmor profiles
# service apparmor status
apparmor module is loaded.
0 profiles are loaded.
0 profiles are in enforce mode.
0 profiles are in complain mode.
0 processes have profiles defined.
0 processes are in enforce mode.
0 processes are in complain mode.
0 processes are unconfined but have a profile defined.

mysql이 데이터베이스 파일을 잠그고 데몬이 충돌할 경우 잠금을 해제할 수 없는 것이 가능합니까? 그렇다면 잠금을 어떻게 해제합니까?

현재 데이터베이스를 실행 중입니다.

mysqld --skip-grant-tables

...그래서 실행 파일이 작동하고 데이터베이스가 적어도 어느 정도 유효하다는 것을 알고 있습니다(사이트는 모두 괜찮아 보입니다). 내가 뭐 놓친 거 없니?

읽어 주셔서 감사합니다.

답변1

데이터베이스 손상.

오캄의 면도날이 승리합니다. 백업을 새 서버로 옮기고 데이터베이스 위치/장비 구성을 업데이트했습니다. 모든 것을 다시 시작했을 때 나는 움츠러들었습니다. 나는 AppArmor가 믿을 수 없을 정도로 복잡하고 어려운 짐승이라고 스스로 확신하는 데 몇 시간을 보냈지만, 나의 과묵함은 전혀 근거가 없었습니다. 첫 번째 시도에서 완벽하게 작동했습니다.

어떻게 보면 놀랍다정상적인 일파일이 손상되지 않은 경우 Apple 광고여야 합니다.

이제 WordPress 사이트를 복원할 수 있다면 웹 개발자는 내가 실행되는 동안 여러 가지 업데이트를 수행하겠지만 --skip-grant-tables원인이 무엇인지 깨닫기 전에는 그렇지 않았습니다. :-/

관련 정보