create view view_a as select * from a;create user user1 identified by xxx; grant select on view_a to user1; grant connect to user1; conn user1/xxx; create synonym view_a for USERNAME.view_a; select * from view_a;
我再补充一下! 我以SYS用户登录PLSQL之后,执行如下SQL语句,创建用户PXGLADMINCREATE USER "PXGLADMIN" PROFILE "DEFAULT" IDENTIFIED BY "PXGL2009" DEFAULT TABLESPACE "DATA_SPC" TEMPORARY TABLESPACE "TEMP_SPC" ACCOUNT UNLOCK; GRANT "CONNECT" TO "PXGLADMIN";然后我以PXGLADMIN登录PLSQL,我发现新建立的用户,可以看到系统中所有的表,用户及视图等信息。 我想确认一下,新建立的用户是不是都是这样?还是我权限建立的不对! 我只想让PXGLADMIN用户看到他自己建的对象信息,其他的他都不能看到!
select * from session_privs 看看 也许public里有select any table 等权限
sys用户下查 select * from dba_sys_privs where grantee='PUBLIC'; 看看结果是什么
以PXGLADMIN用户登录,看看 select * from session_privs 有什么结果,这个不可能没结果的再show user看下你登录的用户 是否以as sysdba登录而实际登录了sys用户
以PXGLADMIN用户登录,看看 select * from session_privs 有什么结果,这个不可能没结果的 ========================================1 DBA AUDIT ANY YES 2 DBA DROP USER YES 3 DBA RESUMABLE YES 4 DBA ALTER USER YES 5 DBA ANALYZE ANY YES 6 DBA BECOME USER YES 7 DBA CREATE ROLE YES 8 DBA CREATE RULE YES 9 DBA CREATE TYPE YES 10 DBA CREATE USER YES 11 DBA CREATE VIEW YES
到新建的用户下查询 select * from session_privs 第三次问你 这个是最重要的问题,怎么都没有回答?
你查询的是session_privs视图吗。。应该只有1列的,你的结果有3列 select * from session_roles 看看如果是在sqlplus下操作,执行show user看看 如果用pl/sql developer,到command窗口执行show user;你是否在创建新用户的时候,以语句的方式或者管理界面里赋予其DBA用户权限
我把用户删除了,在PLSQL下如下语句又重新建了一次 CREATE USER "PXGLADMIN" PROFILE "DEFAULT" IDENTIFIED BY "PXGL2009" DEFAULT TABLESPACE "DATA_SPC" TEMPORARY TABLESPACE "TEMP_SPC" ACCOUNT UNLOCK; GRANT "CONNECT" TO "PXGLADMIN"; 以PXGLADMIN登录 执行 select * from session_roles; 显示 CONNECT
以PXGLADMIN登录 执行 select * from session_privs; 显示 1 CREATE SESSION 2 ALTER SESSION 3 CREATE TABLE 4 SELECT ANY TABLE 5 CREATE CLUSTER 6 CREATE SYNONYM 7 CREATE VIEW 8 CREATE SEQUENCE 9 SELECT ANY SEQUENCE 10 CREATE DATABASE LINK 11 SELECT ANY DICTIONARY
grant select on view_a to user1;
grant connect to user1;
conn user1/xxx;
create synonym view_a for USERNAME.view_a;
select * from view_a;
我以SYS用户登录PLSQL之后,执行如下SQL语句,创建用户PXGLADMINCREATE USER "PXGLADMIN" PROFILE "DEFAULT"
IDENTIFIED BY "PXGL2009" DEFAULT TABLESPACE "DATA_SPC"
TEMPORARY TABLESPACE "TEMP_SPC"
ACCOUNT UNLOCK;
GRANT "CONNECT" TO "PXGLADMIN";然后我以PXGLADMIN登录PLSQL,我发现新建立的用户,可以看到系统中所有的表,用户及视图等信息。
我想确认一下,新建立的用户是不是都是这样?还是我权限建立的不对!
我只想让PXGLADMIN用户看到他自己建的对象信息,其他的他都不能看到!
看看
也许public里有select any table 等权限
select * from dba_sys_privs where grantee='PUBLIC';
看看结果是什么
select * from session_privs
有什么结果,这个不可能没结果的再show user看下你登录的用户
是否以as sysdba登录而实际登录了sys用户
select * from session_privs
有什么结果,这个不可能没结果的 ========================================1 DBA AUDIT ANY YES
2 DBA DROP USER YES
3 DBA RESUMABLE YES
4 DBA ALTER USER YES
5 DBA ANALYZE ANY YES
6 DBA BECOME USER YES
7 DBA CREATE ROLE YES
8 DBA CREATE RULE YES
9 DBA CREATE TYPE YES
10 DBA CREATE USER YES
11 DBA CREATE VIEW YES
select * from session_privs
第三次问你
这个是最重要的问题,怎么都没有回答?
select * from session_roles 看看如果是在sqlplus下操作,执行show user看看
如果用pl/sql developer,到command窗口执行show user;你是否在创建新用户的时候,以语句的方式或者管理界面里赋予其DBA用户权限
CREATE USER "PXGLADMIN" PROFILE "DEFAULT"
IDENTIFIED BY "PXGL2009" DEFAULT TABLESPACE "DATA_SPC"
TEMPORARY TABLESPACE "TEMP_SPC"
ACCOUNT UNLOCK;
GRANT "CONNECT" TO "PXGLADMIN"; 以PXGLADMIN登录
执行
select * from session_roles;
显示
CONNECT
执行
select * from session_privs;
显示
1 CREATE SESSION
2 ALTER SESSION
3 CREATE TABLE
4 SELECT ANY TABLE
5 CREATE CLUSTER
6 CREATE SYNONYM
7 CREATE VIEW
8 CREATE SEQUENCE
9 SELECT ANY SEQUENCE
10 CREATE DATABASE LINK
11 SELECT ANY DICTIONARY
revoke dba from public;