有人能指导我如何在Oracle 11g中创建一个用户,并仅授予该用户执行一个特定存储过程以及该存储过程中的表的权限。
我不太确定该怎么做!
有人能指导我如何在Oracle 11g中创建一个用户,并仅授予该用户执行一个特定存储过程以及该存储过程中的表的权限。
我不太确定该怎么做!
连接为 SYSTEM 用户。
CREATE USER username IDENTIFIED BY apassword;
GRANT CONNECT TO username;
GRANT EXECUTE on schema.procedure TO username;
您可能还需要:
GRANT SELECT [, INSERT] [, UPDATE] [, DELETE] on schema.table TO username;
对于存储过程使用的任何表格。
按照以下步骤在Oracle中创建用户。
--以System用户身份连接
CONNECT <USER-NAME>/<PASSWORD>@<DATABASE NAME>;
--创建用户查询
CREATE USER <USER NAME> IDENTIFIED BY <PASSWORD>;
--提供角色
GRANT CONNECT,RESOURCE,DBA TO <USER NAME>;
--提供特权
GRANT CREATE SESSION, GRANT ANY PRIVILEGE TO <USER NAME>;
GRANT UNLIMITED TABLESPACE TO <USER NAME>;
--提供对表格的访问。
GRANT SELECT,UPDATE,INSERT ON <TABLE NAME> TO <USER NAME>;
Oracle文档内容全面、在线且免费。建议您学会使用它。您可以在此处找到CREATE USER的语法以及GRANT的语法。
为了连接数据库,我们需要授予用户CREATE SESSION特权。
为了允许新用户对存储过程拥有权限,我们需要授予EXECUTE特权。授权者必须是以下之一:
请注意,通常情况下,我们不需要授予存储过程使用的对象的权限即可使用该过程。默认权限是,在执行存储过程时,我们将以存储过程所有者相同的权限执行,并在执行存储过程时继承其权限。这由AUTHID子句涵盖。默认值为definer(即过程所有者)。仅当AUTHID设置为CURRENT_USER(即调用者,也就是我们的新用户)时,我们需要授予存储过程使用的对象的权限。了解更多。
不要在测试和生产环境中使用这些方法。以下步骤仅建议用于本地环境。对于我的本地主机,我是通过以下步骤创建用户的:
重要提示:请使用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
编辑:如果您遇到Oracle ora-28001密码已过期的问题,以下操作可能有用:
select * from dba_profiles;-- check PASSWORD_LIFE_TIME
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED; -- SET IT TO UNLIMITED
CONNECT
、RESOURCE
和DBA
角色。connect_identifier
使用不同的语法。sqlplus sys/<<password>>@<<connect_identifier>> as sysdba
假设您拥有一个类似于"Oracle Technology Network Developer Day"提供的12cR1虚拟机。连接字符串可能是(用于连接到提供的PDB):
sqlplus sys/oracle@127.0.0.1/orcl as sysdba
sqlplus sys@"127.0.0.1/orcl" as sysdba -- to avoid putting the pw in clear
"
变成\"
。MYROLE
并授予其他角色或特权。我添加了几乎最少的内容来做一些有趣的事情:create role myrole not identified;
grant create session to myrole;
grant alter session to myrole;
grant create table to myrole;
MYUSER
。在identified by
后面的字符串是区分大小写的密码。其余部分则不区分大小写。您还可以使用SQL限定符(用引号"
括起来)代替常规标识符,后者会转换为大写并受到一些限制。配额可以是unlimited
而不是20m
。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 USER_NAME IDENTIFIED BY PASSWORD;
GRANT CONNECT, RESOURCE TO USER_NAME;
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;
https://docs.oracle.com/cd/B19306_01/network.102/b14266/admusers.htm#i1006107 https://chartio.com/resources/tutorials/how-to-create-a-user-and-grant-permissions-in-oracle/
步骤1。
create user raju identified by deshmukh;
步骤2。
grant connect , resource to raju;
步骤3。
grant unlimitted tablespace to raju;
步骤4。
grant select , update , insert , alter to raju;