【问题标题】:Oracle 11g statements to create new user and grant privileges?Oracle 11g 语句创建新用户并授予权限?
【发布时间】:2012-08-08 09:53:11
【问题描述】:

我想在 oracle 11g 中创建一个用户/模式并将所有权限授予该用户。我怎样才能用一个简单的脚本来做到这一点。我查看了以下链接,但我不确定使用哪一个或者这些语句是否是最好的方法。

http://ss64.com/ora/grant.html

你能建议我如何以最简单的方式安全地做到这一点吗?

【问题讨论】:

    标签: oracle11g


    【解决方案1】:

    要创建新用户,请使用“create user”命令。所以一个典型的创建用户命令是:

    create user test identified by test default tablespace mytbsp.
    

    当然,您需要将用户、密码和表空间的值替换为不同的值。不过,我建议您查看 Oracle 的文档 http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_8003.htm

    下一步是授予用户相应的权限。授予用户所有权限是一种非常糟糕的方法,因为您还会授予他 dba 权限。相反,您给他的连接权限和对他的默认表空间的权限。此外,最好使用角色而不是直接授予权限。因此,如果您必须再次授予权限,您只需授予角色。第一步是创建角色:

    GRANT CREATE session, CREATE table, CREATE view, 
          CREATE procedure,CREATE synonym,
          ALTER table, ALTER view, ALTER procedure,ALTER synonym,
          DROP table, DROP view, DROP procedure,DROP synonym
          TO MyRole;
    

    此声明不完整,您可能需要额外的权限(例如索引维护),但请查看在线 oracle 文档。

    之后,您将角色授予新创建的用户。

    GRANT myrole to test;
    

    【讨论】:

    • 我可以全部授予 MyRole 吗?
    • 正如我所解释的,这是一种非常糟糕的方法。你基本上让每个人都成为 dba,禁用所有 privs,你真的需要考虑安全性
    • 那么你需要:创建会话、创建表、更改表、删除表、创建索引、更改索引、删除索引
    • OP 询问如何在一个命令中执行,这是一个有效的请求 - 应保留判断。考虑像 Oracle (BEA) WebLogic 这样的应用服务器。连接池的“用户”可能确实需要创建/检索/更新/删除,甚至 DBA 类型的权限。
    • 如果这仅用于个人计算机上的开发目的,那就太好了。也许史蒂夫应该从一开始就指出这一点,但在适当的情况下这样做并没有错。
    【解决方案2】:

    创建用户:

    create user user_name identified by password ;
    

    授予权限:

    grant all privilege to user_name;
    

    如果要查看权限数量:

    select * from system_privilege_map where neme like '%PRIV%';
    

    如果您想查看分配给用户的权限:

    select count (*) , grantee
    from dba_sys_privs 
    where grantee in ('user1','user2')
    group by grantee ;
    

    【讨论】:

      猜你喜欢
      • 2023-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-08
      • 1970-01-01
      • 1970-01-01
      • 2018-02-23
      相关资源
      最近更新 更多