Postgresql
無法在 plpython3u 中“創建函式”,權限被拒絕
作為 postgres 使用者,我
create extension plpython3u;
的數據庫中有然後我將其設置
plpython3u
為trusted:select lanpltrusted from pg_language where lanname like 'plpython3u';
返回true但是當我的 db_user 嘗試
create function check_data_valid(id bigint) returns boolean as $$ -- ... return true $$ language plpython3u;
我得到了錯誤:
permission denied for the language plpython3u
grant usage on plpython3u to db_user
因此,對於我的 postgres 使用者,我已經嘗試過:grant execute on plpython3u to db_user
但兩者都返回錯誤:
relation python doesn't exist
也許是因為它是一個擴展……但是,我不知道該怎麼做才能創建我的儲存過程。
首先不要讓 plpython3u 成為受信任的語言。這很糟糕。 您正在以可能被嚴重濫用的方式授予對數據庫、文件系統等各種事物的訪問權限。 請重新考慮。
現在,根據您的評論,您希望將管理員權限與普通使用者權限分開。這樣做的方法是確保超級使用者是 NOINHERIT 並且使用者被授予角色。你可以:
CREATE ROLE mydba WITH SUPERUSER NOINHERIT; GRANT mydba TO myuser;
然後登錄,
myuser
您可以:SET ROLE mydba;
並且您獲得超級使用者權限。然後,您可以使用它以類似於 *nix 系統上的 sudo 的方式臨時升級您的權限。