【day2】ORACLE 用戶、角色、權限管理

1、oracle默認用戶及密碼如下

用戶名 密碼 以何種身份登錄 備註
sys change_on_install SYSDBA 或 SYSOPER 不能以 NORMAL 登錄,爲默認的系統管理員身份
system manager SYSDBA 或 NORMAL 不能以 SYSOPER 登錄,可作爲默認的系統管理員
dbsnmp dbsnmp SYSDBA 或 NORMAL 複製管理員
scott tiger NORMAL 普通用戶

注意:
(1)直接用system登錄,報錯ORA-01017: invalid username/password; logon denied
在這裏插入圖片描述
    解決辦法:需加上登錄身份。
在這裏插入圖片描述
(2)直接登錄scott,會報錯ORA-28000: the account is locked
在這裏插入圖片描述
    解決辦法:
    Oracle數據庫默認Scott用戶是鎖定的,需要登錄system用戶,解除scott用戶鎖定狀態。先用系統用戶sys登入後輸入 alter user scott account unlock;這樣就可以解除scott用戶的鎖定狀態,重新啓動sqlplus,就可以利用scott用戶登入了。

2、連接用戶

connect(conn) 【用戶名】/【密碼】

3、查看當前用戶

SQL> show user;
USER 爲 "SCOTT"

顯示出當前的用戶名

4、退出

exit

5、修改密碼

    修改當前登錄用戶的密碼,直接使用

password (passw)

    如果是要修改其他用戶的密碼,必須使用具有dba權限的賬號,如system,或是具備alter user權限的賬號。

alter user 【用戶名】 identified by 【新密碼】

6、刪除用戶

drop user 【用戶名】 【cascade】

    cascade:當用戶已經建表,要刪除該用戶時,加上cascade,則會級聯將用戶及用戶創建的表都刪除。

7、創建用戶

    創建用戶就用create命令即可,但是需要使用dba權限的賬號或是具備create user權限的賬號。

create user 【用戶名】 identified by 【密碼】;

7.1 用戶角色

    新創建的用戶是沒有任何操作權限的,當你登錄這個新用戶時,會提示以下內容

SQL> create user zsy identified by elephant;
用戶已創建。

SQL> conn zsy/elephant;
ERROR:
ORA-01045: user ZSY lacks CREATE SESSION privilege; logon denied
警告: 您不再連接到 ORACLE。

SQL> show user;
USER 爲 ""

    此時需要給新用戶賦予權限或角色。
    先說權限。Oracle有兩類權限。① 系統權限:用戶對數據庫訪問和操作的權限,如建庫、建表、建索引等。② 對象權限:用戶對其他用戶的數據對象訪問的權限,(數據對象爲表、視圖、過程、觸發器等),例如select、insert、update、delete、all、create index權限。
使用下面的命令來給新用戶賦予權限:

  grant create session to [用戶名];//授予用戶創建session的權限,即登陸權限
  grant unlimited tablespace to [用戶名];//授予用戶使用表空間的權限
  grant create table to [用戶名];//授予用戶創建表的權限
  grante drop table to [用戶名];//授予用戶刪除表的權限
  grant insert table to [用戶名];//授予用戶插入表的權限
  grant update table to [用戶名];//授予用戶修改表的權限
  grant all to public;//授予所有權限(all)給所有用戶(public)
   grant select on [表名] to [其他用戶名];//授予用戶查看指定表(其他用戶的表)的權限
  grant select on tablename to [用戶名];//授予用戶查看指定表的權限
  grant drop on tablename to [用戶名];//授予用戶刪除表的權限
  grant insert on tablename to [用戶名];//授予用戶插入的權限
  grant update on tablename to [用戶名];//授予用戶修改表的權限
  grant insert on tablename to [用戶名];//授予對指定表插入權限
  grant update on tablename to [用戶名];//授予對指定表修改權限
  grant alert all table to [用戶名];//授予用戶alert所有表的權限
  grant select on [表名] to [用戶名] with grant option;//with grant option的意思是被賦予該權限的用戶還具備了賦予其他用戶該權限的權限,即權限的傳遞。若最初的用戶被刪除,則之後被賦予權限的用戶將被移除該權限。

撤銷權限:

revoke select on [表名] from [用戶名];//select就是之前賦予用戶的權限

    另外,oracle也有一個角色的概念。角色是oracle事先定義的,該角色會具備一些權限,類似於將權限批量授權給了這個角色。角色分兩種。① 自定義角色:用戶自己定義一個角色。② 預定義角色:在安裝數據庫時已經存在,例如connect角色、dba角色、resource角色(可以讓用戶在任何表空間建表)。在創建用戶的時候,可以直接讓某個用戶成爲某個角色,從而具備這個角色具備的所有權限。
    可以這樣理解角色。角色就相當於人類社會的職位,比如警察、法官。這些職位是在一個小朋友出生的時候就存在的,定義好了的,比如警察的權限是強制執行、拘留違法人員等,那麼當一個人被任命爲警察後,他就直接具備這些權限了。類似的,當一個oracle被指定成爲一個角色後,也就具備這個角色擁有的權限了。
    oracle對於角色、權限的管理是oracle一個很優秀的地方。
授予用戶角色:

grant connect to [用戶名];//connect是oracle的角色之一

創建、刪除角色:

  create role [角色名];//創建角色
  grant create session to [角色名];//將創建session的權限授予myrole
  drop role [角色名];//刪除角色

7.2 用戶口令管理

    分爲兩步:① 制定規則;② 將規則賦予給用戶。
1、鎖定賬戶
    可以指定用戶登錄時最多可以輸入密碼的次數,也可以指定用戶鎖定的時間。需要用dba權限的賬號去執行。
    ① 創建profile文件,即制定規則

create profile [profile名] limit failed_login_attempts [m] passwork_lock_time [n];

其中m表示鎖定多少天,整數;n表示最多輸入幾次,整數。
    ② 將規則賦給某個用戶

alter user [用戶名] profile [profile名];

    ③ 給用戶解鎖

alter user [用戶名] account unlock;

2、讓用戶定期來修改密碼,終止口令
    ① 創建規則文件
create profile [profile名] limit password_life_time [m] password_grace_time [n];
    m:每隔幾天修改密碼,整數。n:寬限期爲幾天,整數。
    ② 將規則賦給某個用戶

alter user [用戶名] profile [profile名];

3、口令歷史管理
    規定用戶在修改密碼的時候,不能使用以前使用過的密碼。可使用口令歷史,這樣oracle就會把口令修改的信息存放在數據字段中,這樣當用戶修改密碼時,oracle就會對新舊密碼進行比較,當凡發現舊密碼和新密碼一樣時,就提示用戶重新輸入密碼。
    ① 創建規則文件

create profile password_history limit password_life_time [m] password_grace_time [n] password_reuse_time [k];

    password_reuse_time指定口令可重用時間,k天之後纔可以重用。
    ② 將規則賦給某個用戶

alter user [用戶名] profile [profile名];

    刪除profile:

drop profile [profile名] 【cascade】;//刪除之後被賦予規則的用戶將不再具備該規則。cascade就是級聯刪除。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章