在這篇文章中capucivar將介紹Oracle使用者的建立以及許可權的操作。
首先,開啟sqlplus,用scott使用者登入,建立一個使用者的語句為:create user username identified by pwd;username為你要建立的使用者名稱,pwd為使用者密碼。現在capucivar要建立一個使用者名稱為capucivar,密碼為capucivar的使用者,那麼sql應該這樣寫:create user capucivar identified by capucivar;但是執行結果如下:
顯示許可權不足,也就是scott使用者沒有添加使用者的許可權,那麼誰有這個許可權呢?capucivar在《capucivar淺談Oracle資料庫》一文中提到過,Oracle中有三個重要的使用者分別是:
a、使用者名稱:sys 預設密碼為:change_on_install;
b、使用者名稱:system 預設密碼:manager;
c、使用者名稱:scott 預設密碼:tiger。
capucivar當時還對三個使用者的許可權有這樣一個比喻:sys是董事長,system是經理,而scott是職員。所以sys使用者有建立使用者的許可權。
那麼,我們從scott切換到sys登入:conn sys/change_on_install as sysdba,登陸成功之後,就可以建立上面的capucivar使用者了。我們開啟Enterprise Manager Console,就可以看到剛才建立的使用者capucivar:
一個capucivar使用者建立好了,是不是就可以用這個使用者登入了呢?我們來試一下:conn capucivar/capucivar,結果如下:
這是因為還沒有給capucivar使用者登入的許可權。
我們再次用sys登入,寫上如下sql語句:grant connect,resource to capucivar;這句話就賦予capucivar使用者串連資料庫和對自己使用者下資料庫表的增刪改查的許可權。
許可權賦予成功之後,我們就可以用capucivar使用者名稱來登入並對資料表進行操作了。
接下來需要思考的是,這個capucivar使用者能不能查看其他使用者下的資料表呢?比如現在想要查看scott使用者下的emp表:select * from scott.emp;結果如下:
這說明capucivar使用者沒有許可權操作其他使用者的資料表。如果在一定條件下,capucivar使用者必須查看scott使用者下的表,怎麼辦呢?既然capucivar要查看的是scott使用者下的表,當然要由scott來給他許可權進行操作。那我們就用scott使用者登入,給capucivar使用者對自己資料表的增刪改查的許可權:grant select,delete,update,insert on emp to capucivar;這個sql語句賦予capucivar對scott使用者下的emp表的增刪改查許可權。授權成功之後就可以執行scott使用者下emp表的增刪改查操作了。
scott使用者如果要收回capucivar對emp表的刪除許可權收回許可權的關鍵字為:revoke,收回刪除許可權的sql語句為:revoke delete on emp from capucivar;這句話可以理解為字面意思:從capucivar收回對emp的刪除。收回所有許可權的sql語句為:revoke all on emp from capucivar;