programing

--secure-file-priv 인수를 정규화하지 못했습니다.

kingscode 2022. 11. 8. 21:14
반응형

--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)에서 작동했습니다.

  1. 최상위 디렉토리에 폴더를 작성합니다. /

    sudo mkdir mysql
    
  2. 변경은 하기 위한 허가이다0777

    sudo chmod 0777 mysql
    
  3. 소유권 변경mysql

    sudo chown mysql:mysql mysql
    
  4. 에서 권한을 변경합니다..cnf파일

    sudo gedit /etc/mysql/mariadb.conf.d/50-server.cnf
    
  5. 행을 에 추가합니다.[mysqld]부분

    secure-file-priv = /mysql
    
  6. mysql 서비스를 재시작합니다.

    sudo systemctl restart mysql.service
    
  7. 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

반응형