PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Il comando COPY di Postgresql fornisce l'errore di autorizzazioni negate

Un'ipotesi:stai usando Fedora, Red Hat Enterprise Linux, CentOS, Scientific Linux o una delle altre distribuzioni che abilitano SELinux per impostazione predefinita.

In entrambi i casi e sul tuo particolare sistema operativo/versione le politiche di SELinux per PostgreSQL non consentono al server di leggere file al di fuori della directory dei dati di PostgreSQL, oppure il file è stato creato da un servizio coperto da una politica mirata, quindi ha un'etichetta che PostgreSQL non è permesso di leggere da.

Puoi confermare se questo è il problema o meno eseguendo, come root:

setenforce 0

quindi riprovare. Corri:

setenforce 1

per riattivare SELinux dopo il test. setenforce non è permanente; SELinux verrà comunque riattivato automaticamente al riavvio. La disabilitazione permanente di SELinux di solito non è una buona soluzione per problemi come questo; se confermi che il problema è SELinux, può essere esplorato ulteriormente.

Dal momento che non hai specificato il sistema operativo o la versione che stai utilizzando, la versione di PostgreSQL, il comando esatto che stai eseguendo, ls -al nel file, \d+ sul tavolo, ecc, è difficile fornire ulteriori dettagli o sapere se questa è più di un'ipotesi. Prova ad aggiornare la tua risposta per includere tutto questo e un ls --lcontext anche del file.