Oracle筆記之使用者管理

2022-02-06 13:09:06 字數 3981 閱讀 3965

建立使用者使用create user語句,需要dba許可權:

create user tom identified by mot;
修改別人的密碼需要dba許可權,或者alter user許可權:

alter user tom identified by newpasswd;
或者修改別人的密碼帶上使用者名稱:

sql> password tom;

更改 tom 的口令

新口令: ******

重新鍵入新口令: ******

口令已更改

如果是更改自己的密碼的話可以省略掉使用者名稱,注意更改自己密碼的時候需要輸入舊密碼來證明我是我自己:

sql> password

更改 sys 的口令

舊口令: ******

新口令: ******

重新鍵入新口令: ******

口令已更改

修改密碼的語法跟linux下修改密碼的語法類似,猜想是因為在很久之前大家都是用linux的,這麼設計可能是為了相容性吧,盡量不去改變使用者習慣。

刪除使用者也需要dba的許可權,自己刪除自己是不允許的,不能自殺...

drop user tom;
如果需要在刪除使用者的時候刪除此使用者建立的所有表,那麼在使用者名稱後面加上cascade:

drop user tom cascade;
需要注意如果此使用者已經登入到系統中的話是暫時不能刪除的,所以不能自殺。

建立的新使用者是沒有任何許可權的,需要為其指定許可權,不指定許可權的話連系統都登入不上去。

為乙個使用者賦予許可權使用grant,**許可權使用revoke。

為建立的使用者tom賦予許可權使其可以登入:

grant connect to tom;
上面的命令到底是什麼意思呢?這個connect實際上是乙個預定義角色,上面表示我們把乙個叫做connect的角色賦予給了使用者tom。

oracle中許可權分為系統許可權和物件許可權。

物件許可權:使用者對其它使用者的資料物件操作的許可權,大概有二十多種。

因為許可權實在太多了,乙個使用者的許可權可能非常非常的多,這個時候我們管理起來就會很崩潰,所以就引入了乙個新概念叫做角色,給乙個角色初始賦予很多許可權,讓乙個角色表示乙個許可權的集合,這樣子我們再對許可權進行管理的時候就多了乙個選擇,可以將乙個角色直接授予乙個使用者,當使用者擁有某種角色的時候就擁有這個角色表示的所有許可權。

角色又分為兩種,一種是預定義角色,一種是自定義角色。

系統中初始化了一些預定義角色,但是也可能仍然滿足不了我們的需求,這個時候就讓我們可以自定義角色,來自定義許可權集合。

grant connect to tom;
系統許可權中有一種叫做create session,擁有這個許可權才可以登入到系統,而connect角色包含了create session許可權。

特殊的角色:

dba:可以讓乙個普通使用者變成乙個dba,dba大概相當於mysql下的root。

物件許可權都是啥:

select

insert

update

delete

allcreate index

...

授予乙個使用者建立表的許可權:

grant resource to tom;
希望乙個使用者tom可以去檢視其它使用者scott建立的表emp,讓使用者scott授權給使用者tom相應的物件許可權:

grant select on emp to tom;
登入tom,查詢scott下的emp表:

select * from scott.emp;
注意需要使用使用者名稱進行引用,聯想到mysql中使用databasename.tablename可以跨資料庫查詢,將乙個使用者當做乙個資料庫,引用的時候使用username.tablename進行引用,這樣的話使用使用者名稱進行分割,不同的使用者名稱下是可以有相同表名的表的。

上面的如果需要tom能夠把賦予的這個許可權繼續傳遞,比如傳遞給sam,可以在授權的時候在後面加上with grant option:

grant select on emp to tom with grant option;
tom現在也可以把這個許可權授予給別人了,而且還可以把許可權最大化的傳遞,讓別人也擁有授權許可權,使用sys建立乙個使用者:

create user sam identified by toor;
然後讓tom把這個許可權授予給sam:

grant select on scott.emp to sam with grant option;
注意如果這個時候scott把賦予tom的許可權收回了的話,tom授予給其他人的許可權仍然是存在的,大概就相當於趙立春書記上任的時候提拔了好些幹部,如果他倒台了這些幹部也都全給一擼到底回家種地,這樣子就沒辦法管理了,這裡不實行連坐。

收回許可權的時候只是將grant改為revoke,將to改為from:

revoke select on emp from tom;
profile是口令限制、資源限制的命令,當建立資料庫的時候oracle自動建立名為default的profile,當建立使用者的時候沒有指定profile的話,那麼就意味著使用default的profile。

建立和管理profile需要dba許可權。

建立乙個profile,名稱為lock_account,用來限制登入時的最大失敗嘗試次數,鎖定的時間單位為天:

create profile lock_account 

limit

failed_login_attempts 3

password_lock_time 2;

讓tom使用這個profile:

alter user tom profile lock_account;
當嘗試次數超過了之後,賬戶又會被鎖定了,再登入的時候就會提示,即使密碼對了也登不上去了:

error:

ora-28000: the account is locked

賬戶被鎖定的時候可以讓dba來解鎖賬戶:

alter user tom account unlock;
某個使用者的賬戶有異常行為需要凍結掉,dba手動鎖定賬戶:

alter user scott account lock;
限制最大嘗試次數可以在一定程度上提高賬戶的安全性。

為了提高安全性管理員通常會做的乙個限制就是限定某個使用者的密碼每隔多長時間就修改一次,相當於一種"動態密碼"了,建立乙個profile限定使用者必須週期性的改密碼,password_life_time表示每隔多少天必須修改密碼,password_grace_time表示到期後寬限幾天:

create profile circle_passwd 

limit

password_life_time 10

password_grace_time 2;

上面的策略表示每隔12天就修改一次密碼,在第十一天的時候就開始提醒,一直提醒兩天,如果一直不修改密碼的話在第十三天賬戶將被鎖定。

我上乙份工作的公司配的筆記本每隔幾個月就要修改一次密碼,因為我們都習慣一直用同乙個熟悉的東西,不大想改變習慣嘛,所以我機智的想,如果我在到期的時候將密碼隨便修改一下再立刻修改回來,不仍然可以使用之前的密碼而不被影響嗎...哈哈哈,當我機智的這麼做的時候我發現我還是太年輕...修改密碼的時候有乙個策略可以不允許使用者使用歷史密碼,即之後再使用的密碼不能與之前的重複,在oracle的profile也有這個選項,使用password_reuse_time指定口令的可重用時間,比如:

create profile circle_passwd_history 

limit

password_life_time 10

password_grace_time 2

password_reuse_time 2;

刪除profile:

drop profile circle_passwd_history;
當profile被刪除的時候使用到這個profile的使用者也不被約束了。

Oracle之使用者管理筆記

使用者是資料庫最基本的物件之一,oracle中的使用者可以分為三類 在正式開發中,使用sysytem是不安全的。建立乙個名為lisa的普通使用者,口令為abc,指定預設表空間users create user lisa identified by abc default tablespace use...

Oracle之使用者管理

1.要想建立使用者,需要管理員登入,以下操作在sys下操作 2.建立使用者 create user 使用者名稱 identityfy by 密碼 列子 3.新建立的使用者不具備任何許可權,如果要想獲取登入許可權,可以使用下面的語法 grant 許可權 1,許可權2,to 使用者名稱 列子 4.建立序...

oracle學習筆記之使用者管理 2

案例 建立乙個使用者software,然後給分配許可權,可以讓software登入資料庫 建立表 操作自己建立的表,角色,最後刪除使用者。1 建立software使用者,密碼system create user software identified by system 2 讓software連線資...