如何在Oracle 11g中创build用户并授予权限

有人可以告诉我如何在Oracle 11g中创build一个用户,只允许该用户执行一个特定的存储过程和该过程中的表。

我不太确定如何做到这一点!

以系统连接。

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文档是全面的,在线的和免费的。 你应该学会使用它。 你可以在这里findCREATE USER的语法,

为了连接到数据库,我们需要授予用户CREATE SESSION权限 。

要允许存储过程的新用户权限,我们需要授予EXECUTE特权。 设保人必须是以下其中之一:

  • 程序所有者
  • 一个用户使用WITH ADMIN选项授予该过程的执行权限
  • 具有GRANT ANY OBJECT权限的用户
  • 一个DBA或其他超级用户帐户。

请注意,我们通常不需要授予存储过程使用的对象的权限以使用该过程。 默认权限是我们执行与程序所有者相同权限的程序,并且在执行程序时inheritance权限。 这由AUTHID子句覆盖。 缺省是定义者(即程序所有者)。 只有当AUTHID设置为CURRENT_USER(调用者,这是我们的新用户),我们是否需要授予该过程使用的对象的权限。 了解更多 。

按照以下步骤在Oracle中创build用户。
– 以系统用户身份连接

 CONNECT <USER-NAME>/<PASSWORD>@<DATABASE NAME>; 

– 创build用户查询

 CREATE USER <USER NAME> IDENTIFIED BY <PASSWORD>; 

– 提供angular色

 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>; 

不要在像TEST和PROD这样的关键环境中使用这些方法。 下面的步骤只是针对本地环境而build议的。 对于我的本地主机,我通过以下步骤创build用户:

重要提示:使用SYSTEM用户凭证创build用户。否则,当您在同一数据库上运行多个应用程序时,您可能会遇到问题。

  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 

正如前面在评论中多次提到的那样,Oracle不鼓励使用CONNECTRESOURCEDBAangular色。

您必须以SYS身份进行连接才能创build您的angular色以及具有此angular色的用户。 您可以根据自己的喜好使用SQL Developer或SQL * Plus。 不要忘记在loginstring中提及SYSDBAangular色。 connect_identifier使用不同的语法。

 sqlplus sys/<<password>>@<<connect_identifier>> as sysdba 

假设您有一个像“ Oracle技术networking开发人员日 ”中提供的虚拟机一样的12cR1。 连接string可能(连接到提供的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 

请注意,在Unix下,引号必须被转义,否则它们将被shell使用。 从而"变成\"

然后创buildangular色MYROLE并授予其他angular色或权限。 我几乎添加了最低限度做一些有趣的事情:

 create role myrole not identified; grant create session to myrole; grant alter session to myrole; grant create table to myrole; 

接下来创build用户MYUSERidentified by密码identified by的string区分大小写。 其余的不是。 你也可以使用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; 

最终,你作为你的新用户连接。

请注意,您也可以更改默认configuration文件或提供另一个configuration来设置密码的有效期限,允许的失败login尝试次数等。

 CREATE USER USER_NAME IDENTIFIED BY PASSWORD; GRANT CONNECT, RESOURCE TO USER_NAME; 
  • 步骤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;