FEHLER: Berechtigung verweigert für Sprache c
Wenn Sie eine Funktion erstellen, wie dies mit einem nicht-super-user bekomme ich den folgenden Fehler:
ERROR: permission denied for language c
SQL state: 42501
Die Funktion erstellt wird :
CREATE OR REPLACE FUNCTION dblink_connect (text)
RETURNS text
AS '$libdir/dblink','dblink_connect'
LANGUAGE C STRICT;
Aber wenn ich wollte, die Erlaubnis zu geben, auf die Sprache C, um meine nicht-super-user, ich erhalte den folgenden Fehler:
postgres=# grant usage on language c to caixa;
ERROR: language "c" is not trusted
Das bedeutet, nicht-super-user können keine Funktion mit der Sprache C? oder ist es etwas, was ich falsch mache?
InformationsquelleAutor der Frage vchitta | 2011-08-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das ist richtig, nach doc:
Quick-check:
Wenn Sie wirklich wollen, dann könnten Sie ändern
pg_language
- system-Katalog (ÄNDERN-SPRACHE
nicht eine solche option):InformationsquelleAutor der Antwort Grzegorz Szpetkowski
Anstatt die Sprache zu vertrauten, die als badund gefährlich
sollten Sie lieber Rollen, zu bieten superuser-Berechtigung vorübergehend, um den Nutzer während der Zeit, die er manipuliert die gespeicherten Prozeduren:
als superuser:
dann angemeldet als Benutzer können Sie
set role dba
Dann könnten Sie gespeicherte Prozeduren erstellen, die in C, während Sie vorübergehend die Rolle
dba
.reset role;
wenn Sie fertig sind kommen wieder normale Rechte.Mehr info hier: https://dba.stackexchange.com/questions/37336/cannot-create-function-in-plpython3u-permission-denied
InformationsquelleAutor der Antwort Stephane Rolland