我嘗試創建用戶并為他們授予一些權限。我嘗試在不使用程序的情況下創建:
CREATE USER User1 IDENTIFIED BY password;
它作業正常。但例如,我有成千上萬的用戶。所以我創建了一個程式來做到這一點:
CREATE OR REPLACE PROCEDURE CreateUser AS
BEGIN
FOR u IN ( SELECT id FROM User )
LOOP
EXECUTE IMMEDIATE 'CREATE USER User_'||d.id || ' IDENTIFIED BY password';
EXECUTE IMMEDIATE 'GRANT SELECT ON UserInfo_'||d.id||' TO User_'||d.id;
END LOOP;
END
但它會拋出一個錯誤:
ORA-01031: insufficient privileges
我該如何處理這個問題?感謝您提前幫助
uj5u.com熱心網友回復:
您需要確保運行該程序的用戶具有創建用戶的權限。
假設將運行該程序的用戶是 MyUser,您需要運行:
GRANT CREATE USER to MyUser;
uj5u.com熱心網友回復:
如果您的 SQL 是直接的(即不在程序中)但不是在程序/函式中作業,則意味著您通過角色獲得了授權。為了使陳述句在程序或函式中起作用,我們需要直接授予而不是通過角色。
您可以通過執行以下操作并嘗試 SQL 來檢查您是否擁有按角色創建用戶,如果失敗,則意味著您可以通過角色訪問。
SET role none;
CREATE USER User1 IDENTIFIED BY password;
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/443322.html
標籤:甲骨文
