CentOS 7의 파일에 mysql 출력 쓰기

CentOS 7의 파일에 mysql 출력 쓰기

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제공하지 않습니다 .homeuser

2. SELinux 활동을 확인합니다.구성 또는 비활성화(가능한 경우)

비활성화하려면:

편집하다 /etc/selinux/config:

SELINUX=disabled

그런 다음 명령을 다시 시작하거나 실행하십시오.

setenforce 0

답변3

  1. SQL 계정에 파일 권한이 있는지 확인하세요
  2. 파일을 임시 디렉터리에 출력합니다. 예를 들어 'INTO OUTFILE /tmp/yourfile' 또는 mysql이 액세스할 수 있는 디렉토리
  3. 사이트에서 파일을 다운로드하려면 공개 HTML 폴더에 "/tmp"를 심볼릭 링크로 연결하세요.

참고: 권한 문제로 인해 파일을 삭제할 수 없는 경우 파일 이름은 고유해야 합니다.

관련 정보