--secure-file-priv 인수를 정규화하지 못했습니다.
를 실행해야 합니다.load_file()
진술.서류에 의하면secure_file_priv
를 디세블로 할 필요가 있습니다.""
또는 로 설정해야 합니다.path
.아니라면,load_file()
돌아온다NULL
.
- 편집할 때
my.cnf
이 변수를 설정합니다.mysqld-group
로.""
mariadb 를 문제없이 재기동할 수 있습니다.-이 변수를 패스로 설정하면(secure_file_priv="/path/"
다음과 같은 출력이 표시됩니다.
sudo systemctl restart mariadb.service
Job for mariadb.service failed because the control process exited with error code.
See "systemctl status mariadb.service" and "journalctl -xe" for details.
> sudo systemctl status mariadb.service
mariadb.service - MariaDB 10.1 database server
Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Tue 2017-09-12 10:50:59 CEST; 13s ago
Process: 4815 ExecStartPost=/usr/libexec/mysql-check-upgrade (code=exited, status=0/SUCCESS)
Process: 5306 ExecStart=/usr/libexec/mysqld --basedir=/usr $MYSQLD_OPTS $_WSREP_NEW_CLUSTER (code=exited, status=1/FAILURE)
Process: 5271 ExecStartPre=/usr/libexec/mysql-prepare-db-dir mariadb.service (code=exited, status=0/SUCCESS)
Process: 5249 ExecStartPre=/usr/libexec/mysql-check-socket (code=exited, status=0/SUCCESS)
Main PID: 5306 (code=exited, status=1/FAILURE)
Status: "MariaDB server is down"
sep 12 10:50:57 BEL002.HOME systemd[1]: Starting MariaDB 10.1 database server...
sep 12 10:50:58 BEL002.HOME mysql-prepare-db-dir[5271]: Database MariaDB is probably initialized in /var/lib/mysql already, nothing is done.
sep 12 10:50:59 BEL002.HOME mysqld[5306]: 2017-09-12 10:50:59 139800931358976 [Warning] Failed to normalize the argument for --secure-file-priv.
sep 12 10:50:59 BEL002.HOME mysqld[5306]: 2017-09-12 10:50:59 139800931358976 [ERROR] Aborting
sep 12 10:50:59 BEL002.HOME systemd[1]: mariadb.service: Main process exited, code=exited, status=1/FAILURE
sep 12 10:50:59 BEL002.HOME systemd[1]: Failed to start MariaDB 10.1 database server.
sep 12 10:50:59 BEL002.HOME systemd[1]: mariadb.service: Unit entered failed state.
sep 12 10:50:59 BEL002.HOME systemd[1]: mariadb.service: Failed with result 'exit-code'.
실행했습니다.chmod 777 /path/
.
설정했을 경우secure_file_priv
로.""
,선택한다.load_file("file name")
아직 반환되지 않음NULL
.
디세블로 하려면secure_file_priv
?
이 문제는 systemd 보호가 원인일 수 있습니다.데비안 10 버스터에서도 비슷한 문제가 있었습니다.
한다면secure-file-priv=/home
- 데몬이 시작되지만 다음 경우에 실패합니다.SELECT ... INTO OUTFILE
.한다면secure-file-priv=/home/username
- 데몬이 다음 문자로 시작되지 않음Failed to normalize the argument for --secure-file-priv
오류입니다. 하지만 secure-file-priv에 다른 경로를 사용하면 모든 것이 잘 작동합니다. /home 디렉토리만 'special'이었습니다.
간단한 수정: mariadb systemd 서비스 파일 편집(debian의 경우 이 파일은/lib/systemd/system/mariadb.service
코드 검색:
# Prevent accessing /home, /root and /run/user
ProtectHome=true
및 세트ProtectHome=false
.
다른 디렉토리에 문제가 있는 경우(/usr
,/boot
,/etc
), 확인하다ProtectSystem
선택.또한 에 문제가 있는 경우/tmp
- 확인PrivateTmp
.
문서: https://www.freedesktop.org/software/systemd/man/systemd.exec.html
OpenSuSe LEAP 42.3을 사용하고 있습니다.
나는 로 바뀌었다./etc/my.cnf.d/secure_file_priv.cnf
부터
secure_file_priv = /var/lib/mysql-files
로.
secure_file_priv = /var/lib/mysql
폴더/var/lib/mysql-files
존재하지 않습니다. 이것이 이유입니다.
이것이 최선의 솔루션인지는 모르겠지만 Linux(Ubuntu 20.04.4 LTS, MariaDB: 10.6.7-MariaDB)에서 작동했습니다.
최상위 디렉토리에 폴더를 작성합니다.
/
sudo mkdir mysql
변경은 하기 위한 허가이다
0777
sudo chmod 0777 mysql
소유권 변경
mysql
sudo chown mysql:mysql mysql
에서 권한을 변경합니다.
.cnf
파일sudo gedit /etc/mysql/mariadb.conf.d/50-server.cnf
행을 에 추가합니다.
[mysqld]
부분secure-file-priv = /mysql
mysql 서비스를 재시작합니다.
sudo systemctl restart mysql.service
CSV 파일로 테이블을 내보냅니다.
SELECT * INTO OUTFILE '/mysql/fileName.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' FROM tableName;
이것으로 테이블을 csv 파일로 내보냈습니다.
언급URL : https://stackoverflow.com/questions/46174064/failed-to-normalize-the-argument-for-secure-file-priv
'programing' 카테고리의 다른 글
Firebase 스토리지, vue 앱으로 이미지 검색 (0) | 2022.11.08 |
---|---|
웹 페이지 로드 및 실행 순서 (0) | 2022.11.08 |
키=>값 배열을 JavaScript에 저장하는 가장 좋은 방법? (0) | 2022.10.30 |
예외를 올바르게 무시하는 방법 (0) | 2022.10.30 |
Java에서의 ClassCast Exception 설명 (0) | 2022.10.30 |