是否有人可以建议我如何在Oracle 11g中创建用户,并仅授予该用户执行一个特定存储过程和该过程中的表的能力。
我真的不知道该怎么做!
发布于 2012-02-26 03:56:29
以系统身份连接。
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;
到该过程使用的任何表。
发布于 2014-03-10 14:22:33
按照以下步骤在Oracle中创建用户。
--以系统用户身份连接
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>;
发布于 2016-09-24 17:44:49
正如前面在评论中多次提到的那样,甲骨文不鼓励使用CONNECT
、RESOURCE
和DBA
角色。
您必须以SYS身份连接才能创建您的角色和被赋予此角色的用户。您可以根据自己的喜好使用SQL Developer或SQL*Plus。不要忘记在登录字符串中提到SYSDBA角色。connect_identifier
使用不同的语法。
sqlplus sys/<<password>>@<<connect_identifier>> as sysdba
假设您有一个12cR1,类似于使用"Oracle Technology Network Developer Day“作为VM提供的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
请注意,在Unix下,必须对引号进行转义,否则它们将被shell使用。这样,"
就变成了\"
。
然后创建角色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;
最终,您将以新用户的身份进行连接。
请注意,您还可以更改默认配置文件或提供另一个配置文件,以自定义某些设置,如密码的有效期、允许的失败登录尝试次数等。
https://stackoverflow.com/questions/9447492
复制相似问题