현재 MySQL 서버는 임시 디렉터리로 /tmp를 사용하고 있는데 저장 문제가 있어서 변경하고 싶습니다.
이 기사에 이어:CentOS에서 MySQL tmp 위치를 변경하는 방법나는 Scientific Linux를 사용하고 있으며 일반적으로 CentOS는 시뮬레이션 도구로 잘 작동하므로 다음을 모두 수행했습니다 sudo
.
mkdir /home/mysqltmp
chmod 1777 /home/mysqltmp
nano /etc/my.cnf
Add below line under the [mysqld] section and save the file
tmpdir=/home/mysqltmp
systemctl restart mysqld
다시 시작하지 못했습니다. 변경하지 않고 이전 my.cnf를 복원하면 완벽하게 작동합니다. 이는 구성 파일 자체에 문제가 있거나 권한을 설정하는 방식에 문제가 있음을 의미하며 (제한된) Linux 경험을 고려하면 확실히 권한 문제입니다.
업데이트: mysqld.log를 보면 이것이 실제로 권한 문제인 것으로 보입니다.
2018-05-16T00:01:05.211853Z 0 [Note] /usr/sbin/mysqld (mysqld 5.7.22) starting as process 5929 ...
2018-05-16T00:01:05.214159Z 0 [Note] InnoDB: PUNCH HOLE support available
2018-05-16T00:01:05.214186Z 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2018-05-16T00:01:05.214191Z 0 [Note] InnoDB: Uses event mutexes
2018-05-16T00:01:05.214194Z 0 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier
2018-05-16T00:01:05.214197Z 0 [Note] InnoDB: Compressed tables use zlib 1.2.3
2018-05-16T00:01:05.214202Z 0 [Note] InnoDB: Using Linux native AIO
2018-05-16T00:01:05.214382Z 0 [Note] InnoDB: Number of pools: 1
2018-05-16T00:01:05.214459Z 0 [Note] InnoDB: Using CPU crc32 instructions
mysqld: Can't create/write to file '/home/mysqltmp/ibAcknwl' (Errcode: 13 - Permission denied)
2018-05-16T00:01:05.214535Z 0 [ERROR] InnoDB: Unable to create temporary file; errno: 13
2018-05-16T00:01:05.214542Z 0 [ERROR] InnoDB: Plugin initialization aborted with error Generic error
2018-05-16T00:01:05.214548Z 0 [ERROR] Plugin 'InnoDB' init function returned error.
2018-05-16T00:01:05.214551Z 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2018-05-16T00:01:05.214554Z 0 [ERROR] Failed to initialize builtin plugins.
2018-05-16T00:01:05.214557Z 0 [ERROR] Aborting
내가 뭘 잘못하고 있는지 아는 사람이 있나요?
업데이트 2: 이하다selinux 문제인 것 같습니다. chown
문제가 해결되지 않았으며 감사 로그에 이 디렉터리에 대한 AVC 거부 {쓰기} 메시지가 많이 있습니다.
selinux는 나에게 전혀 받아들일 수 없습니다. 이 문제를 해결할 수 있는 방법이 있습니까?
답변1
오늘도 같은 문제가 발생했습니다. "에 대한 Google 검색을 생성할 수 있는 충분한 힌트를 제공했습니다.selinux mysql 쓰기 권한". 이것은 즉시 나에게 답을 주었고 읽을 수 있습니다.이 Oracle 블로그 게시물에서. Oracle이 링크를 제거하는 경우에는 일반적으로 발생하지 않는 결과를 얻을 수도 있습니다.그것하지만 인내심을 갖고 아래로 스크롤하여 문자 메시지를 확인하시기 바랍니다.
여기서는 몇 가지 팁을 알려드리겠습니다.
- (루트 쉘) 명령을 사용하여 selinux 상태를 확인하십시오.
getenforce
- '라고 대답하면구현하다'로 설정해 보세요.관대 한' 명령을 사용하십시오
setenforce 0
- 그런 다음 mysqld를 다시 시작하고 제대로 작동하는지 확인하십시오.
- selinux를 다시 정상 상태로 재설정하려면 명령을 사용하십시오.
setenforce 1
selinux가 mysqld가 작동하지 않는 원인이라는 것을 증명한 후에는 안전하지 않기 때문에 selinux를 비활성화할 수 없습니다. mysqld 관련 예외를 해당 구성에 추가하는 방법을 이해해야 합니다.
이 부분에서는 제가 제공한 링크와 SELinux 문서를 사용하여 스스로 알아내도록 하겠습니다. 저는 전문가가 아니므로 제가 완전히 이해하지 못하는 부분에 대해서는 조언을 제공하지 않을 것입니다.