注意,我们通常不需要为存储过程使用的对象授予权限就可以使用该过程。默认权限是,我们使用与过程所有者相同的权限执行过程,并且在执行过程时继承它们的权限。AUTHID 子句涵盖了这一点。默认值是 Definition (即过程所有者)。只有当 AUTHID 设置为 CURRENT _ USER (调用程序,即我们的新用户)时,我们才需要对过程使用的对象授予权限。进一步调查.
不要在关键环境(如 TEST 和 PROD)中使用这些方法。以下步骤只是针对当地环境提出的建议。对于我的 localhost,我通过以下步骤创建用户:
重要提示: 使用 SYSTEM 用户凭据创建用户。否则,在同一数据库上运行多个应用程序时可能会遇到问题。
CONNECT SYSTEM/<<System_User_Password>>@<<DatabaseName>>; -- connect db with username and password, ignore if you already connected to database.
然后按照脚本运行
CREATE USER <<username>> IDENTIFIED BY <<password>>; -- create user with password
GRANT CONNECT,RESOURCE,DBA TO <<username>>; -- grant DBA,Connect and Resource permission to this user(not sure this is necessary if you give admin option)
GRANT CREATE SESSION TO <<username>> WITH ADMIN OPTION; --Give admin option to user
GRANT UNLIMITED TABLESPACE TO <<username>>; -- give unlimited tablespace grant
编辑: 如果您遇到有关 oracleora-28001的问题,密码已过期,这也可以是有用的运行
select * from dba_profiles;-- check PASSWORD_LIFE_TIME
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED; -- SET IT TO UNLIMITED
create user myuser identified by myuser default tablespace users profile default account unlock;
alter user myuser quota 20m on users;
grant myrole to myuser;
CREATE USER books_admin IDENTIFIED BY MyPassword;
GRANT CONNECT TO books_admin;
GRANT CONNECT, RESOURCE, DBA TO books_admin;
GRANT CREATE SESSION GRANT ANY PRIVILEGE TO books_admin;
GRANT UNLIMITED TABLESPACE TO books_admin;
GRANT SELECT, INSERT, UPDATE, DELETE ON schema.books TO books_admin;