20.4. 설정 예


20.4.1. MariaDB 데이터베이스 위치 변경

Red Hat Enterprise Linux를 사용하는 경우 데이터베이스를 저장하는 MariaDB의 기본 위치는 /var/lib/mysql/ 입니다. SELinux는 기본적으로 SELinux가 될 것으로 예상하므로 이 영역은 이미 mysqld_db_t 유형을 사용하여 적절하게 레이블이 지정됩니다.
데이터베이스가 저장되는 위치는 개별 환경 요구 사항 또는 기본 설정에 따라 변경할 수 있지만 SELinux는 이 새 위치를 인식하는 것이 중요합니다. 이 레이블은 적절하게 레이블이 지정됩니다. 이 예제에서는 MariaDB 데이터베이스의 위치를 변경한 다음 SELinux가 해당 콘텐츠를 기반으로 새 영역에 계속 보호 메커니즘을 제공할 수 있도록 새 위치에 레이블을 지정하는 방법을 설명합니다.
이 예제는 SELinux가 MariaDB에 미치는 영향을 보여줍니다. MariaDB에 대한 포괄적인 설명서는 이 문서의 범위를 벗어납니다. 자세한 내용은 공식 MariaDB 설명서 를 참조하십시오. 이 예에서는 mariadb-serversetroubleshoot-server 패키지가 설치되어 있고 auditd 서비스가 실행 중이고 /var/lib/mysql/ 의 기본 위치에 유효한 데이터베이스가 있다고 가정합니다.
  1. mysql 에 대한 기본 데이터베이스 위치의 SELinux 컨텍스트 보기:
    Copy to Clipboard Toggle word wrap
    ~]# ls -lZ /var/lib/mysql
    drwx------. mysql mysql system_u:object_r:mysqld_db_t:s0 mysql
    
    데이터베이스 파일의 위치에 대한 기본 컨텍스트 요소인 mysqld_db_t 가 표시됩니다. 이 컨텍스트가 제대로 작동하려면 이 예제에서 사용할 새 데이터베이스 위치에 수동으로 적용해야 합니다.
  2. 다음 명령을 입력하고 mysqld root 암호를 입력하여 사용 가능한 데이터베이스를 표시합니다.
    Copy to Clipboard Toggle word wrap
    ~]# mysqlshow -u root -p
    Enter password: *******
    +--------------------+
    |     Databases      |
    +--------------------+
    | information_schema |
    | mysql              |
    | test               |
    | wikidb             |
    +--------------------+
    
  3. mariadb.service 서비스를 중지합니다.
    Copy to Clipboard Toggle word wrap
    ~]# systemctl stop mariadb.service
  4. 데이터베이스의 새 위치에 대한 새 디렉터리를 만듭니다. 이 예에서는 /mysql/ 이 사용됩니다.
    Copy to Clipboard Toggle word wrap
    ~]# mkdir -p /mysql
  5. 이전 위치의 데이터베이스 파일을 새 위치로 복사합니다.
    Copy to Clipboard Toggle word wrap
    ~]# cp -R /var/lib/mysql/* /mysql/
  6. mysql 사용자 및 그룹의 액세스를 허용하도록 이 위치의 소유권을 변경합니다. 이렇게 하면 SELinux가 계속 관찰할 기존 Unix 권한이 설정됩니다.
    Copy to Clipboard Toggle word wrap
    ~]# chown -R mysql:mysql /mysql
  7. 다음 명령을 입력하여 새 디렉터리의 초기 컨텍스트를 확인합니다.
    Copy to Clipboard Toggle word wrap
    ~]# ls -lZ /mysql
    drwxr-xr-x. mysql mysql unconfined_u:object_r:usr_t:s0   mysql
    
    새로 생성된 이 디렉터리의 컨텍스트 usr_t 는 현재 SELinux에 MariaDB 데이터베이스 파일의 위치로 적합하지 않습니다. 컨텍스트가 변경되면 MariaDB가 이 영역에서 제대로 작동할 수 있습니다.
  8. 텍스트 편집기로 기본 MariaDB 구성 파일 /etc/my.cnf 를 열고 새 위치를 참조하도록 datadir 옵션을 수정합니다. 이 예에서 입력해야 하는 값은 /mysql:입니다.
    Copy to Clipboard Toggle word wrap
    [mysqld]
    datadir=/mysql
    
    이 파일을 저장하고 종료합니다.
  9. mariadb.service 를 시작합니다. 서비스가 시작되지 않아야 하며 거부 메시지가 /var/log/messages 파일에 기록됩니다.
    Copy to Clipboard Toggle word wrap
    ~]# systemctl start mariadb.service
    Job for mariadb.service failed. See 'systemctl status mariadb.service' and 'journalctl -xn' for details.
    
    그러나 감사 데몬이 setroubleshoot 서비스와 함께 실행되는 경우 거부는 대신 /var/log/audit/audit.log 파일에 기록됩니다.
    Copy to Clipboard Toggle word wrap
    SELinux is preventing /usr/libexec/mysqld "write" access on /mysql. For complete SELinux messages. run sealert -l b3f01aff-7fa6-4ebe-ad46-abaef6f8ad71
    
    이 거부의 이유는 MariaDB 데이터 파일에 대해 /mysql/ 레이블이 올바르게 레이블이 지정되지 않기 때문입니다. SELinux는 MariaDB가 usr_t 로 레이블이 지정된 콘텐츠에 액세스하지 못하도록 합니다. 이 문제를 해결하려면 다음 단계를 수행하십시오.
  10. 다음 명령을 입력하여 /mysql/ 에 대한 컨텍스트 매핑을 추가합니다. semanage 유틸리티는 기본적으로 설치되지 않습니다. 시스템에 누락된 경우 policycoreutils-python 패키지를 설치합니다.
    Copy to Clipboard Toggle word wrap
    ~]# semanage fcontext -a -t mysqld_db_t "/mysql(/.*)?"
  11. 이 매핑은 /etc/selinux/targeted/contexts/files/file_contexts.local 파일에 작성됩니다.
    Copy to Clipboard Toggle word wrap
    ~]# grep -i mysql /etc/selinux/targeted/contexts/files/file_contexts.local
    
    /mysql(/.*)?    system_u:object_r:mysqld_db_t:s0
    
  12. 이제 restorecon 유틸리티를 사용하여 이 컨텍스트 매핑을 실행 중인 시스템에 적용합니다.
    Copy to Clipboard Toggle word wrap
    ~]# restorecon -R -v /mysql
  13. 이제 /mysql/ 위치에 MariaDB에 대한 올바른 컨텍스트로 레이블이 지정되었으므로 mysqld 가 시작됩니다.
    Copy to Clipboard Toggle word wrap
    ~]# systemctl start mariadb.service
  14. /mysql/: 컨텍스트가 변경되었는지 확인합니다.
    Copy to Clipboard Toggle word wrap
    ~]$ ls -lZ /mysql
    drwxr-xr-x. mysql mysql system_u:object_r:mysqld_db_t:s0 mysql
    
  15. 위치가 변경되어 레이블이 지정되었으며 mysqld 가 성공적으로 시작되었습니다. 이제 정상적인 작업을 확인하기 위해 실행 중인 모든 서비스를 테스트해야 합니다.
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat, Inc.