En tant qu'utilisateur Postgres, j'ai create extension plpython3u;
dans ma base de données
ensuite, j'ai mis le plpython3u
Pour faire confiance: select lanpltrusted from pg_language where lanname like 'plpython3u';
retourne vrai
mais quand mon db_user essaie
create function check_data_valid(id bigint)
returns boolean
as $$
-- ...
return true
$$ language plpython3u;
J'ai eu l'erreur: permission denied for the language plpython3u
Donc, avec mon utilisateur Postgres, j'ai essayé: grant usage on plpython3u to db_user
et grant execute on plpython3u to db_user
Mais les deux renvoient l'erreur:
relation python doesn't exist
peut-être que c'est parce que c'est une extension ... Cependant, je ne sais pas quoi faire pour créer ma procédure stockée.
Premier NON NON FAIT PLPYTHON3U dans une langue de confiance. Ceci est mauvais. Vous donnez accès à toutes sortes de choses sur la base de données, le système de fichiers et similaires d'une manière qui pourrait être horriblement abusée. veuillez reconsidérer.
Maintenant, de vos commentaires, vous souhaitez conserver l'autorisation d'administrateur séparé de la permission normale de l'utilisateur. Le moyen de faire cela est de s'assurer que le superutilisateur est NOINHERIT et l'utilisateur est accordé le rôle. Vous pouvez:
CREATE ROLE mydba WITH SUPERUSER NOINHERIT;
GRANT mydba TO myuser;
Ensuite, connecté en tant que myuser
alors vous pouvez:
SET ROLE mydba;
Et vous obtenez des privilèges superutilisateurs. Vous pouvez ensuite utiliser cela pour augmenter temporairement vos autorisations d'une manière similaire à Sudo sur * Nix Systems.