CentOS 터미널의 mysql 명령줄 클라이언트 내부에서 다음 명령을 실행하려고 합니다.
SELECT Concat('TRUNCATE TABLE ',table_schema,'.',TABLE_NAME, ';')
FROM INFORMATION_SCHEMA.TABLES where table_schema in ('justatest')
INTO OUTFILE '/home/user/tmp/truncate.sql';
결과는 다음과 같습니다.
ERROR 1 (HY000): Can't create/write to file '/home/user/tmp/truncate.sql'
(Errcode: 13 - Permission denied)
그런 다음 새 터미널을 열고 를 입력하고 su -
비밀번호를 입력한 후 다음 명령을 입력했습니다.
chown root:root /home/user/tmp
chmod 1777 /home/user/tmp
그러나 위의 원시 SQL 코드를 실행하면 여전히 동일한 오류가 발생합니다.
편집하다:
시도할 때에도 동일한 오류가 발생합니다.
chown username:username /home/user/tmp
chmod 1777 /home/user/tmp
시도할 때 동일한 오류 메시지가 나타납니다.
chown mysql:mysql /home/user/tmp
chmod 1777 /home/user/tmp
이 오류를 어떻게 해결할 수 있나요?
답변1
원하는 것을 달성하기 위한 또 다른 방법일 뿐입니다...
mysql
경로 없이 필수 파일 이름만 실행하여 명령을 실행합니다 .
SELECT Concat('TRUNCATE TABLE ',table_schema,'.',TABLE_NAME, ';')
FROM INFORMATION_SCHEMA.TABLES where table_schema in ('justatest')
INTO OUTFILE 'truncate.sql';
그러면 파일이 기본 mysql 디렉토리( /var/lib/mysql/database
) 에 저장됩니다.
그런 다음 파일을 이동하고 소유자를 변경할 수 있습니다
$ sudo mv /var/lib/mysql/database/truncate.sql /home/user/tmp
$ sudo chown user:user /home/user/tmp/truncate.sql
답변2
1. 올바른 권한을 설정하십시오.
경로에는 /home/user/tmp
모든 수준에서 올바른 권한이 있어야 합니다.
/home
/home/user
/home/user/tmp
엔드포인트 디렉터리 뿐만 아니라 이러한 모든 폴더를 mysql
사용자가 사용할 수 있어야 합니다.tmp
명령이 불완전합니다.
chown mysql:mysql /home/user/tmp
폴더 소유자만 추가할 뿐 액세스 권한은 tmp
제공하지 않습니다 .home
user
2. SELinux 활동을 확인합니다.구성 또는 비활성화(가능한 경우)
비활성화하려면:
편집하다 /etc/selinux/config
:
SELINUX=disabled
그런 다음 명령을 다시 시작하거나 실행하십시오.
setenforce 0
답변3
- SQL 계정에 파일 권한이 있는지 확인하세요
- 파일을 임시 디렉터리에 출력합니다. 예를 들어 'INTO OUTFILE /tmp/yourfile' 또는 mysql이 액세스할 수 있는 디렉토리
- 사이트에서 파일을 다운로드하려면 공개 HTML 폴더에 "/tmp"를 심볼릭 링크로 연결하세요.
참고: 권한 문제로 인해 파일을 삭제할 수 없는 경우 파일 이름은 고유해야 합니다.