En gissning:Du använder Fedora, Red Hat Enterprise Linux, CentOS, Scientific Linux eller någon av de andra distros som aktiverar SELinux som standard.
Antingen och på ditt specifika operativsystem/version tillåter inte SELinux-policyerna för PostgreSQL att servern kan läsa filer utanför PostgreSQL-datakatalogen, eller så skapades filen av en tjänst som omfattas av en riktad policy så att den har en etikett som PostgreSQL inte är får läsa från.
Du kan bekräfta om detta är problemet eller inte genom att köra, som root:
setenforce 0
testa sedan igen. Kör:
setenforce 1
för att återaktivera SELinux efter testning. setenforce
är inte permanent; SELinux kommer att återaktiveras automatiskt vid omstart ändå. Att inaktivera SELinux permanent är vanligtvis inte en bra lösning för sådana här problem; om du bekräftar att problemet är SELinux kan det utforskas vidare.
Eftersom du inte har angett operativsystemet eller versionen du använder, PostgreSQL-versionen, det exakta kommandot du kör, ls -al
på filen, \d+
på bordet, etc, är det svårt att ge några mer detaljer, eller att veta om detta är mer än en gissning. Försök att uppdatera ditt svar så att det inkluderar allt det och en ls --lcontext
av filen också.