开发笔记_Oracle学习笔记 _02_权限管理

Oracle学习  第二天

            —— 用户权限管理

    SQL plus 常用命令

        linesize        设置每行显示的字符。默认 80 个。 用法 : set linesize 需要显示的字符数
        pagesize      设置每页显示的条目数。默认 14 个。14 个过后会重新打印一个表头,然后显示剩余条目。用法同上。

    Oracle 用户管理

        
        创建用户  
                命令:create user 用户名 identified by 密码
                说明:一般是具有 dba(数据库管理员) 权限的用户才可以操作。如SYS 、SYSTEM
                          Oracle 数据库要求用户密码不能以数字开头
                          新创建的用户是没有任何权限的,需要 dba 用户给该用户授权,Oracle中的大小权限拥有一百多种。
                                    分配权限:
                                        grant 权限名 to 用户名。
                                        例如:grant create session to user001     -- create session 权限仅仅可以登录,无法进行其他操作
                          权限分 系统权限(与数据库管理相关的权限)
                                                            create session   登录权限
                                                            create table       建表权限
                                                            create view        创建视图权限
                                                            ……
                                 和 对象权限(与用户操作数据对象相关的权限)
                                                            update                修改表数据的权限
                                                            insert                   插入表数据的权限
                                                            delete                  删除表数据的权限
                                                            select                   查询表数据的权限
                                                            ……
                         角色 分 预定义角色(系统定义好的一组常用权限集合)
                                                            dba                     包含大多数权限。如增删改查等。可以对其它用户的表进行操作
                                                            connect              包含较少权限,可以登录
                                                            resource             包含一般的权限,但不能查看其它用户的表空间
                                和 自定义角色(自定义的一组权限集合)
                                                            role1                    自行将指定的权限分配给自定义的角色
                                     回收权限:
                                            revoke 权限名 from 用户名。
                细节:上命令后可以继续  -- 表空间(即用户创建的表所存在的空间,指向一个具体的数据文件)
                                    default tablespace users                -- 该用户默认的表空间     users
                                    temporay tablespace temp            -- 该用户临时的表空间     temp
                                    quota 3m on users;                      -- 该用户表空间的大小限制  3M
         删除用户
                命令:drop user 用户名 [cascade]        
                说明:当要删除的用户已经创建过数据对象时,删除该用户时需要在命令后面加上 cascade,表示删除该用户的同时将该用户创建的数据对象一起删除。
                            如果不想使用该用户了,但依然想使用该用户创建的数据对象时。就不能使用drop删除该用户,而应该是冻结用户。

        在同一个db实例中,多个用户之间不能访问其他用户的表。
        原因:当一个用户创建号好后,如果该用户创建了任意一个数据对象,这时,dbms 就会创建一个对应的方案与该用户对应,并且该方案的名字与用户名一致。   
            如果想访问其他用户的表。如A用户想访问B用户的table。
            则需要登录B用户或者dba权限的用户,赋予A用户访问的权限。(指定允许其他人对自己的表进行什么操作,甚至可以指定对哪张表的哪些字段进行何种操作)
            语法:grant all[select | delete | insert | update] on table名  to  A用户        -- 其中all表示所有权限
            权限指定后,即可操作其他用户的表,但需要注意的是,表名需要输入完整名称,即方案名.表名。

        Profile管理用户口令
                profile 是口令限制,资源限制的命令集合,当建立数据库的时候,Oracle会自动建立名称为default的profile,当建立的用户没有指定profile选项,那Oracle就会将default分配给用户。
                   profile的主要作用:
                        限制一个账户登录时最多可以输入密码的次数
                        限制一个账户连续多次输错密码后锁定账户以及锁定时间
                        语法:
                           创建profile文件
                            ---SQL>   create profile 文件名 limit failed_login_attempts 允许输错密码的次数 password_lock_time 锁定的天数;
                           为用户指定profile文件
                              ---SQL>   alter user 用户名 profile 文件名;
                   给用户解锁:
                        语法:
                             ---SQL>   alter user  用户名 account unlock;
                   终止口令:为了让用户定期修改密码,该命令需要dba身份操作
                        语法:
                             ---SQL>   create profile 文件名 limit password_lifr_time 30  password_grace_time 2;
                                            要求用户每 30 天修改一次密码,宽限 2 天
                             ---SQL>   alter user 用户名 profile 文件名;

     
Oracle的登录认证       
        一个很奇怪的现象

            SQL> show user
            USER 为 "SCOTT"
            SQL> conn xxx/xxx as sysdba
            已连接。
            SQL> show user
            USER 为 "SYS"
    
        输入任意的用户名和密码 as sysdba   登录的是SYS用户 

原因:这里Oracle启动了操作系统认证。
          as sysdba 语句 是 特权用户登录的标志, 即操作系统认证。前面的用户名和密码自动忽略,一旦登录成功,自动切换为SYS用户                                
        我的电脑(右) -- 管理 -- 本地用户和组  -- 组   ---- 会发现ora_dba  即Oracle管理员组  -- 打开这个组  ---- 发现当前操作系统登录的账户 Administrator 也处于该组中。

       我们也可以修改数据库文件 sqlnet.ora (一般存在于 app\product\11.2.0\dbhome_1\NETWORK\ADMIN 目录下),让特权用户登录的之后直接使用数据库验证。
        
        SQLNET.AUTHENTICATION_SERVICES= (NTS)              -- NTS  基于操作系统验证
        SQLNET.AUTHENTICATION_SERVICES= (NONE)          -- NONE 基于Oracle验证
        SQLNET.AUTHENTICATION_SERVICES= (NTS, NONE)  -- 两种验证方式共存

    

    如果丢失管理员密码?
        恢复办法:删除原有的密码文件,生成一个新的密码文件
        步骤:
                    搜过    PWD数据库实例名.ora   文件    (app\product\11.2.0\dbhome_1\database)
                    删除该文件(建议备份)
                    生成新的密码文件。
                            在dos控制台下输入命令:
                                    orapwd file=原来的密码文件全路径\密码文件名.ora password=新密码 entries=10;
                            新密码文件名一定要与原来密码文件名相同
                            其中entries是允许的特权用户个数
                    重启Oracle数据库实例即可生效
                    这个修改的是最高权限用户SYS的密码

猜你喜欢

转载自blog.csdn.net/shaotaiban1097/article/details/80290135