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的密码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HolaSecurity

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值