복붙노트

[REDIS] 레디 스 : 저장하는 오프닝 .rdb 실패 : 권한이 거부

REDIS

레디 스 : 저장하는 오프닝 .rdb 실패 : 권한이 거부

나는 레디 스 서버 2.8 우분투 우분투 12.04에 apt-get을 사용하여 설치되어 있습니다.

나는 다른 데이터베이스에서 dump.rdb을 복사 한. 나는 새 서버를 시작하려고 지금 때, 나는 끊임없이 얻을 :

[35763] 04 Mar 01:51:47.088 * 1 changes in 900 seconds. Saving...
[35763] 04 Mar 01:51:47.088 * Background saving started by pid 43313
[43313] 04 Mar 01:51:47.088 # Failed opening .rdb for saving: Permission denied

나는이 문제를 어떻게 해결할 수 있습니까?

해결법

  1. ==============================

    1.당신은 DIR 및 dbfilename의 권한을 확인하려면 redis.conf 파일을 확인해야합니다. 경로에있는 dbfilename에 지정된 파일이 디렉토리 경로에 지정된 경우 존재하고 권한 오른쪽에 있습니다. 다음 문제가 해결되어야한다.

    당신은 DIR 및 dbfilename의 권한을 확인하려면 redis.conf 파일을 확인해야합니다. 경로에있는 dbfilename에 지정된 파일이 디렉토리 경로에 지정된 경우 존재하고 권한 오른쪽에 있습니다. 다음 문제가 해결되어야한다.

    이 의지 도움말 사람을 바랍니다.

    추신

    redis.conf 파일 위치를 찾으려면 #ps 도끼를 사용할 수 있습니다 | GREP은 확인 레디 스. 보통은 입력 파일로 레디 스 서버로 전달됩니다.

    디렉터리 권한의 경우 :이 755이어야의 dbfilename를 들어, 644해야

    때때로 당신은 또한 사용자 여부를 확인하기 위해 top 명령을 사용할 필요가 다음 레디 스 서버 및 디렉토리의 소유자 그룹은 일치한다. 레디 스하지만, 디렉토리는 루트 아래에있다 : 즉 레디 스 서버는 레디 스에 의해 실행되는 루트. 이 경우 대한 Chown 레디 스 필요 : 레디 스 -R 디렉토리.

  2. ==============================

    2.메시지 : 나를 위해 일한 위 .. 내가 그렇게 BGSAVE에 관련되는 주변의 모든 사람을 본 적이 ...하지만 당신은 생산에 있지있는 동안, SAVE이 방법 당신에게 더 정직하고 답을 제공의 비. 당신이 로그를 검사하지 않는 BGSAVE은하지 않습니다.

    메시지 : 나를 위해 일한 위 .. 내가 그렇게 BGSAVE에 관련되는 주변의 모든 사람을 본 적이 ...하지만 당신은 생산에 있지있는 동안, SAVE이 방법 당신에게 더 정직하고 답을 제공의 비. 당신이 로그를 검사하지 않는 BGSAVE은하지 않습니다.

    게시물 수십 파고 후 나는 어떤 단서를 찾지 못했습니다. 즉, 고정 유일한 것은 레디 스 서비스를 중지하고 수동으로 실행되었다.

    처음에 나는 그것이 실행 된 레디 스를 대신하여 사용자에게 관련이있을 수 있다고 생각. 모든시 : 실제 차이 망할이었다 systemd 서브 시스템 레디 스의 구성 서비스 파일 (/etc/systemd/system/redis.service)의 어떤 시점에서 다음이 있던 :

    ReadWriteDirectories: -/etc/redis
    

    와우 슈퍼 냉각! 이 권한이 완벽하게 할 수있는 모든에도 불구하고시 시스템에 어디서든 액세스 레디 스를 방지했다 끝났다.

    어떻게 내 순진 해당 권한이 뭔가를 보장하기 위해 충분히라고 생각했다 적절한 권한을 .. (예, 나는 아이러니 해요).

  3. ==============================

    3.내 권한 문제가 상위 폴더를 수정할 수 없습니다되는 레디 스 사용자의 결과가 될 듯 (은 / var / lib 디렉토리 / 레디 스 / 6379) 임시 파일을 생성하는 목적.

    내 권한 문제가 상위 폴더를 수정할 수 없습니다되는 레디 스 사용자의 결과가 될 듯 (은 / var / lib 디렉토리 / 레디 스 / 6379) 임시 파일을 생성하는 목적.

    이것은 레디 스 서버 프로세스의 strace를 볼되었다 :

    open("temp-1833.rdb", O_WRONLY|O_CREAT|O_TRUNC, 0666) = -1 EACCES (Permission denied)
    

    이 문제는 다음 명령을 실행 한 후 해결되었습니다 :

    setfacl -m d:u:redis:rwX,u:redis:rwX /var/lib/redis/6379
    
  4. ==============================

    4.당신의 redis.conf의 구성 'dbfilename'를 확인합니다. 프로세스를 실행하는 레디 스의 경로에 쓰기 권한이 없습니다.

    당신의 redis.conf의 구성 'dbfilename'를 확인합니다. 프로세스를 실행하는 레디 스의 경로에 쓰기 권한이 없습니다.

  5. ==============================

    5.윈도우 전용 : 이것은 사용자가 이에 대한 권한이없는 것을 의미한다. 이 파일의 기본 소유자 (문서에 따라) 변화에 매우 제한된 액세스 및 필요를 가지고 네트워크 서비스입니다

    윈도우 전용 : 이것은 사용자가 이에 대한 권한이없는 것을 의미한다. 이 파일의 기본 소유자 (문서에 따라) 변화에 매우 제한된 액세스 및 필요를 가지고 네트워크 서비스입니다

    해결책 :

  6. ==============================

    6.내 경우에는 모든 권한은 (가장 응시 대답은 나에게 도움이되지 않습니다 I 평균 있음) 정확했다. 그러나! 레디 스 파일에 잘못된 경로를 사용했다. config (설정) 그것은 정확하지만, 레일 - CLI에서이 '/ proc 디렉토리'돌아왔다. 이 대답은 나에게 도움이 - https://serverfault.com/questions/800295/redis-spontaneously-failed-failed-opening-rdb-for-saving-permission-denied

    내 경우에는 모든 권한은 (가장 응시 대답은 나에게 도움이되지 않습니다 I 평균 있음) 정확했다. 그러나! 레디 스 파일에 잘못된 경로를 사용했다. config (설정) 그것은 정확하지만, 레일 - CLI에서이 '/ proc 디렉토리'돌아왔다. 이 대답은 나에게 도움이 - https://serverfault.com/questions/800295/redis-spontaneously-failed-failed-opening-rdb-for-saving-permission-denied

    경고

    정확한 질문의 경우는 문제가되지 않지만, 누군가가 서버를 해킹처럼 내 상황을 보았다. 설명 링크. 그래서 제대로 설정을 확인하십시오.

  7. ==============================

    7.내 /lib/system/systemd/redis-server.service 파일은 다음을 포함 :

    내 /lib/system/systemd/redis-server.service 파일은 다음을 포함 :

    ReadOnlyDirectories=/
    ReadWriteDirectories=-/var/lib/redis
    

    내 /etc/redis/redis.conf 파일은 데이터베이스 / 데이터 / 레디 스에 위치해야한다고 언급

    dir /data/redis
    

    효과적으로 위의 systemd 설정 파일 데이터가 / 읽기 전용 레디 스 / 수 있습니다.

    나는 redis.conf 파일을 변경하면 읽기 :

    dir /var/lib/redis
    

    나는 오류가 중단되었습니다.

  8. ==============================

    8.감독 systemd는 유형으로 만 구성 = 포크 (fork) = 유형과 데몬으로 예에 해당한다 통지된다.

    감독 systemd는 유형으로 만 구성 = 포크 (fork) = 유형과 데몬으로 예에 해당한다 통지된다.

    sudo는이 /etc/systemd/system/redis.service왔다

    이 서비스 파일 편집 유형을 참조 = 포크 (fork)

    [Unit]
    Description=Redis In-Memory Data Store
    After=network.target
    
    [Service]
    User=redis
    Type=forking
    Group=redis
    ExecStart=/usr/bin/redis-server /etc/redis/redis.conf
    ExecStop=/usr/bin/redis-cli shutdown
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
    

    이 파일을 엽니 다

    sudo는이 /etc/redis/redis.conf왔다

    여기에 이러한 변경 사항을 추가

    daemonize yes
    supervised no
    
  9. ==============================

    9.사람이 다시 발생 그냥 최신 버전으로 레디 스 설치를 업그레이드 문제 업그레이드가없는 경우. 나는 레디 스 2.8.15로이 문제가 발생하고,이 글을 쓰는 시점에 사용할 수있었습니다 레디 스 2.8.22로 업그레이드. 내 회사의 시스템 관리자는이 레디 스 2.8.15 버그라고 나를 안심하고 문제는 업그레이드 후 멀리 갔다.

    사람이 다시 발생 그냥 최신 버전으로 레디 스 설치를 업그레이드 문제 업그레이드가없는 경우. 나는 레디 스 2.8.15로이 문제가 발생하고,이 글을 쓰는 시점에 사용할 수있었습니다 레디 스 2.8.22로 업그레이드. 내 회사의 시스템 관리자는이 레디 스 2.8.15 버그라고 나를 안심하고 문제는 업그레이드 후 멀리 갔다.

  10. ==============================

    10.나는 마법처럼 일했다 Rails 애플리케이션, RF RM은 ./tmp/에 Sidekiq에 의해 사용되는 레디 스와 같은 문제가 있었다.

    나는 마법처럼 일했다 Rails 애플리케이션, RF RM은 ./tmp/에 Sidekiq에 의해 사용되는 레디 스와 같은 문제가 있었다.

  11. ==============================

    11./를 : 내 cmd를 행 세션이 다른 드라이브에서 실행중인 것을 깨달았 때까지 나는이에 약간의 시간을 보냈다. 이런 경우에 다른 사람이 힘 도움말 사람!

    /를 : 내 cmd를 행 세션이 다른 드라이브에서 실행중인 것을 깨달았 때까지 나는이에 약간의 시간을 보냈다. 이런 경우에 다른 사람이 힘 도움말 사람!

  12. ==============================

    12.로그 디렉토리에있는 잠금 파일은 나를 위해이 오류를 일으키는 것입니다. 나는 잠금 파일을 삭제하여 오류를 제거 할 수 있었다 :

    로그 디렉토리에있는 잠금 파일은 나를 위해이 오류를 일으키는 것입니다. 나는 잠금 파일을 삭제하여 오류를 제거 할 수 있었다 :

    RM은 / var / 로그 / 레디 스 / 잠금.

    이 레디 스 여전히 실행되는 동안 다른 시스템이 하나에 복원되었을 때 일어났다.

  13. from https://stackoverflow.com/questions/22160753/redis-failed-opening-rdb-for-saving-permission-denied by cc-by-sa and MIT license