如何在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不鼓励使用CONNECT
, RESOURCE
和DBA
angular色。
您必须以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用户MYUSER
。 identified 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;