public不是角色,你可以理解為所有資料庫使用者的集合。
如果某個許可權賦於了public,那麼所以資料庫的使用者都可以有這個許可權(當然有些使用者可能連connect的許可權都可以沒有)。
比如把一個物件t1給所有使用者有select 許可權
grant select on user1.t1 to public;
create public synonym t1 for t1;
那麼所有的public使用者都可以訪問該表t1
再比如說
grant dba to public;
那麼所有的使用者都有dba許可權了
看下面的例子
SQL> grant dba to public;
授權成功。
SQL> create user hh identified by hh123 default tablespace users;
使用者已建立
SQL> conn hh/hh123
已連線。
SQL> create table t1 (a int);
表已建立。
SQL> conn /as sysdba
SQL> revoke dba from public;
撤銷成功。
ERROR:
ORA-01045: user FANG lacks CREATE SESSION privilege; logon denied
該例中先給所有使用者授予了DBA的許可權,因此建立的hh使用者具有DBA許可權,可以登入;之後把所有使用者的DBA許可權撤銷,hh使用者就不能再登入了。
public不是角色,你可以理解為所有資料庫使用者的集合。
如果某個許可權賦於了public,那麼所以資料庫的使用者都可以有這個許可權(當然有些使用者可能連connect的許可權都可以沒有)。
比如把一個物件t1給所有使用者有select 許可權
grant select on user1.t1 to public;
create public synonym t1 for t1;
那麼所有的public使用者都可以訪問該表t1
再比如說
grant dba to public;
那麼所有的使用者都有dba許可權了
看下面的例子
SQL> grant dba to public;
授權成功。
SQL> create user hh identified by hh123 default tablespace users;
使用者已建立
SQL> conn hh/hh123
已連線。
SQL> create table t1 (a int);
表已建立。
SQL> conn /as sysdba
已連線。
SQL> revoke dba from public;
撤銷成功。
SQL> conn hh/hh123
ERROR:
ORA-01045: user FANG lacks CREATE SESSION privilege; logon denied
該例中先給所有使用者授予了DBA的許可權,因此建立的hh使用者具有DBA許可權,可以登入;之後把所有使用者的DBA許可權撤銷,hh使用者就不能再登入了。