[MySQL] Ubuntu에서 데이터 디렉토리 변경

Ubuntu에서 MySQL deb패키지로 설치하면 데이터가 저장되는 datadir 특수한 설정이 자리잡게 됩니다.

바로 apparmor 것인데 그대로 특정 앱에 대해 방어를 하는 목적으로 만들어진 것입니다. 보안성을 높인 기능이라 있습니다.

좋으면 좋고 귀찮으면 귀찮은 기능입니다. 구글로 검색하면 주로 사용하지 않는 방법이 많이 검색되는것을 보면 말이죠.

 

여기에서는 Ubuntu에서 데이터 디렉토를 바꾸는 방법을 알아봅니다.

기본적으로 아래 환경 설정은 MySQL서버를 내리고 진행합니다.

shell> systemctl stop mysqld

 

■ datadir apparmor 추가하는 방법

다음위치의 파일을 편집하여 신규 datadir 추가하는 방법입니다.

 

1. apparmor mysqld수정

shell> vi /etc/apparmor.d/usr.sbin.mysqld

파일을 열어보면 #으로 여러 섹션이 나누어져 있습니다. 섹션들을 천천히 보면 알겠지만 MySQL에서 필요한 파일이나 정보들이 특수한 권한으로 설정되어 있는것을 확인할 있습니다.

섹션들중 # Allow data dir access라는 섹션이 있습니다. 기존 내용을 보면

/var/lib/mysql/ r,
/var/lib/mysql/** rwk,

으로 되어 있습니다. 이것을 원하는 디렉토리로 바꾸어 줍니다. 에를 들어 원하는 디렉토리가 /mydata/mysql 이라면

/mydata/mysql/ r,
/mydata/mysql/** rwk,

변경합니다.

 

2. MySQL 환경변수의 datadir 변경

datadir 경로를 변경합니다.

shell> vi /etc/mysql/mysql.conf.d/mysqld.cnf 
datadir  = /mydata/mysql

 

3. 추가 파일 편집

아래 경로에서 mysql파일의 내용을 수정합니다.

vi /etc/apparmor.d/abstractions/mysql

줄의 /var/lib/mysql{,d}/mysql{,d}.sock rw, 아래와 같이 수정.

/mydata/mysql{,d}/mysql{,d}.sock rw,

 

4. apparmor 재시작

shell> /etc/init.d/apparmor reload
shell> systemctl start mysql

 

■ apparmor에서 mysqld 제외하는 방법

가장 쉬운 방법입니다. apparmor utility 이용해서 MySQL 걸려있는 apparmor 비활성화 합니다.

 

아래 패키지를 다운로드 합니다.

그리고 aa-disable 명령어로 MySQL관련 apparmor를 비활성화 합니다.

그리고 상태를 확인합니다.

shell> apt install apparmor-utils
shell> aa-disable mysqld
shell> aa-status | grep mysqld

 

다시 활성화 하고 싶다면 아래와 같이 합니다.

shell> aa-enforce /etc/apparmor.d/usr.sbin.mysqld

 

※도움이 되셨다면 광고클릭 한번 부탁드립니다.※

댓글(2)

  • Mr.Son
    2022.01.11 14:32

    좋은 글 감사합니다. 다만 내용 중에 아래 관련 수정할 부분이 있는 듯 합니다.
    Allow data files dir access라는 섹션=>Allow data dir access라는 섹션으로 수정해야 할듯..

    실제로 Allow data files dir access섹션과 Allow data dir access 섹션이 둘다 존재하며, 글의 내용은 Allow data dir access 섹션내용을 수정하는 것 같음.

Designed by JB FACTORY