2012-02-25 86 views

回答

80

以系统连接。

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; 

取其表的过程使用。

+6

+1,然而,'CONNECT'角色拥有比名称更多的特权。我更愿意授予'CREATE SESSION'。 – 2012-02-25 20:06:42

+0

我使用的版本是11g – Andy5 2012-02-25 20:39:07

+2

[“CONNECT,RESOURCE和DBA这些角色是为了与以前版本兼容而提供的...... Oracle建议您设计自己的数据库安全角色,而不是依赖这些角色。不会由将来版本的Oracle数据库自动创建。“](http://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_9013.htm) – danihp 2013-03-13 19:38:17

21

Oracle文档全面,在线且免费。你应该学会使用它。你可以找到CREATE USER hereGRANT here的语法,

为了连接数据库,我们需要授予用户the CREATE SESSION privilege

要允许存储过程的新用户权限,我们需要授予EXECUTE特权。让与人必须是这些中的一个:

  • 过程所有者
  • 授予用户对程序与执行WITH ADMIN选项
  • 与授予用户的任何对象特权
  • DBA或其他超级用户帐户。

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

2
CREATE USER USER_NAME IDENTIFIED BY PASSWORD; 
GRANT CONNECT, RESOURCE TO USER_NAME; 
+1

CONNECT,RESOURCE,DBA”[*“提供这些角色是为了与以前的版本兼容的Oracle数据库...... Oracle建议您设计自己的数据库安全角色,而不是依赖这些角色。这些角色可能不会由未来版本的Oracle数据库自动创建。“*](http://docs.oracle.com/zh_cn/docs/default.aspx)。 com/cd/B28359_01/server.111/b28286/statements_9013.htm#r209c1-t47) – 2016-06-07 19:21:36

22

按照以下步骤在Oracle中创建用户。
--connect为系统用户

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

- 创建用户查询

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

--Provide角色

GRANT CONNECT,RESOURCE,DBA TO <USER NAME>; 

--Provide特权

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

在Oracle 11g中,它是“grant dba”还是“grand sysdba”? – jondinham 2014-09-09 02:59:57

+2

ORA-00990:'授予创建会话授予任何特权至的权限缺失或无效';' – 2014-11-14 13:02:18

+3

在会话后应该有一个逗号 – 2014-12-12 19:36:56

-4
  • 步骤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;

+1

'CONNECT,RESOURCE,DBA' [*”提供这些角色是为了与以前版本的Oracle数据库兼容...... Oracle建议您为数据库设计自己的角色而不是依赖这些角色,这些角色可能不会由未来版本的Oracle数据库自动创建。“*](http://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_9013.htm# r209c1-T47) – 2016-06-07 19:22:20

9

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

重要提示:创建credentials.Otherwise当您运行在同一个数据库的多个应用程序,你可能面临的问题SYSTEM用户的用户。如果你面对一个有关Oracle ORA-28001问题的密码已经过期,这将很有运行

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 

EDIT运行

select * from dba_profiles;-- check PASSWORD_LIFE_TIME ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED; -- SET IT TO UNLIMITED 
+2

'CONNECT,RESOURCE,DBA' [*“提供这些角色是为了与以前版本的Oracle数据库兼容... Oracle建议您设计自己的数据库安全角色,而不是依赖这些角色。这些角色可能不会由将来版本的Oracle数据库自动创建。“*](http://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_9013.htm#r209c1-t47) – 2016-06-07 19:20:58

4

在评论如前所述多次使用CONNECTRESOURCEDBA角色由Oracle气馁。

你必须连接为SYS来创建角色并赋予这个角色的用户(一个或多个)。你可以根据自己的喜好使用SQL Developer或SQL * Plus。不要忘记在登录字符串中提及SYSDBA角色。 connect_identifier使用不同的语法。

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

比方说,你有一个像12cR1与“Oracle Technology Network Developer Day”提供的VM之一。在连接字符串可能(连接到提供PDB):

sqlplus sys/[email protected]/orcl as sysdba 
sqlplus [email protected]"127.0.0.1/orcl" as sysdba -- to avoid putting the pw in clear 

注意,在Unix下,引号都进行转义,否则他们将外壳消耗。因此"变得\"

然后创建角色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; 

最终,您作为新用户进行连接。

请注意,您也可以改变默认的配置文件,或者提供另外一个自定义一些设置,密码的保质期,允许失败的登录尝试根据不同的Oracle版本数等