MySQL이 옵션 파일 my.cnf에 대한 Symlink를 읽지 못함

MySQL이 옵션 파일 my.cnf에 대한 Symlink를 읽지 못함

저는 Ubuntu에서 MySQL 5.5를 실행하고 있습니다.

/etc/mysql/에 my.cnf 파일이 있을 것으로 예상됩니다. - 엄청난!

mysql의 debian 설치의 경우 my.cnf 파일을 편집하지 않는 것이 좋습니다. /etc/mysql/my.cnf 파일에는 /etc/mysql/conf.d/ 폴더에서 더 많은 옵션 파일을 검색할 수 있는 includeDir 지시문이 있습니다.

이 파일을 여기에 배치하면:

/etc/mysql/conf.d/my-local.cnf

MySQL은 파일을 읽고 /etc/mysql/my.cnf의 모든 항목을 재정의합니다.

엄청난! :-)

문제는 다음과 같습니다.

/etc/mysql/conf.d/my-local.cnf 파일의 로컬 복사본을 소스 제어에 보관하고 전체 팀을 위해 주기적으로 업데이트하려고 합니다. 그래서 내 해결책은 심볼릭 링크하는 것입니다.

cd /etc/mysql/conf.d/
ln -s /path/to/my/my-local.cnf my-local.cnf

MySQL은 이 심볼릭 링크를 읽지 않습니다.

다음 사항을 확인했습니다.

  • 물리적 파일과 심볼릭 링크 모두 mysql 매뉴얼에 따라 .cnf 파일 확장자를 갖습니다.
  • mysql 사용자는 이 파일에 접근할 수 있습니다
  • 모든 사용자가 이 파일에 접근할 수 있습니다.
  • mysql 사용자는 심볼릭 링크에 액세스할 수 있습니다.
  • 모든 사용자는 심볼릭 링크에 액세스할 수 있습니다.

요약하자면, MySQL은 /etc/mysql/conf.d/ 폴더에 물리적 파일이 있을 때 읽고 구문 분석합니다. MySQL은 이 폴더의 심볼릭 링크를 읽지 않습니다.

누구든지 아이디어가 있나요? 데비안/우분투 문제일 수 있나요?

비슷하지만 해결되지 않았으며 약간 다른 문제가 설명되었습니다.여기.

답변1

Apparmor는 새로운 위치에 대해 아무것도 모릅니다.my.cnf

MySQL 서버는 심볼릭 링크를 따라 대상을 열려고 시도합니다. 그러나 의류는 이를 거부한다.

my.cnf문제를 해결하려면 다음 경로를 추가해야 합니다./etc/apparmor.d/usr.sbin.mysqld

답변2

ubuntu 9.0.4부터 기본적으로 mysqld에 대해 활성화된 apparmor로 인해 발생할 수 있습니다. 참조하세요http://en.wikipedia.org/wiki/AppArmor.

  • /etc/apparmor.d/local/에서 사이트별 추가 사항을 수정할 수 있습니다. 나는 같은 문제를 겪고 /etc/apparmor.d/local/usr.sbin.mysqld를 편집하여 작동하게 만들었습니다. 정책 파일의 마지막 쉼표에 유의하세요.

    # Site-specific additions and overrides for usr.sbin.mysqld.
    # For more details, please see /etc/apparmor.d/local/README.
    
    # vim:syntax=apparmor
    
    /etc/mysql/conf.d/* rl,
    @{HOMEDIRS}/** rwk,
    
  • /etc/apparmor.d/local/usr.sbin.mysqld를 편집한 후 service apparmor restart. /etc/apparmor.d/local/usr.sbin.mysqld 에 대한 오류나 경고가 없어야 합니다.
  • 내 경우에는 사용자의 홈 디렉터리에 있는 datadir과 사이트별 my.cnf를 사용하고 싶었습니다.

답변3

몇 가지 가능성이 떠오릅니다.

  • 다른 방향으로 심볼릭 링크를 만듭니다. 즉,

    /home/developer/my-local.cnf -> /etc/mysql/conf.d/my-local.cnf
    
  • 대신 하드 링크를 사용하세요.

  • /etcetckeeper와 같은 도구를 사용하여 버전 관리를 수행합니다 .

관련 정보