PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Postgresql COPY-Befehl, der den Fehler "Berechtigungen verweigert" gibt

Eine Vermutung:Sie verwenden Fedora, Red Hat Enterprise Linux, CentOS, Scientific Linux oder eine der anderen Distributionen, die SELinux standardmäßig aktivieren.

Entweder erlauben die SELinux-Richtlinien für PostgreSQL auf Ihrem Betriebssystem/Ihrer Version dem Server nicht, Dateien außerhalb des PostgreSQL-Datenverzeichnisses zu lesen, oder die Datei wurde von einem Dienst erstellt, der von einer gezielten Richtlinie abgedeckt wird, sodass sie ein Label hat, das PostgreSQL nicht ist darf lesen.

Sie können bestätigen, ob dies das Problem ist, indem Sie als root Folgendes ausführen:

setenforce 0

dann nochmal testen. Ausführen:

setenforce 1

um SELinux nach dem Testen wieder zu aktivieren. setenforce ist nicht dauerhaft; SELinux wird beim Neustart ohnehin automatisch wieder aktiviert. Das dauerhafte Deaktivieren von SELinux ist normalerweise keine gute Lösung für solche Probleme. Wenn Sie bestätigen, dass das Problem SELinux ist, kann es weiter untersucht werden.

Da Sie das Betriebssystem oder die Version, die Sie verwenden, nicht angegeben haben, die PostgreSQL-Version, den genauen Befehl, den Sie ausführen, ls -al in der Datei \d+ auf dem Tisch usw., es ist schwer, mehr Details zu geben oder zu wissen, ob dies mehr als eine Vermutung ist. Versuchen Sie, Ihre Antwort so zu aktualisieren, dass sie all das und einen ls --lcontext enthält auch der Datei.