这样,我新建了一个用户USER1,然后新建了一个视图VIEW1
我现在想实现的是,用USER1登录的时候,只能看到与查询视图VIEW1,其他的表,用户什么的他都不能看到,也不能访问!

解决方案 »

  1.   

    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;
      

  2.   

    我再补充一下!
    我以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用户看到他自己建的对象信息,其他的他都不能看到!
      

  3.   

    select * from session_privs
    看看
    也许public里有select any table 等权限
      

  4.   

    sys用户下查
    select * from dba_sys_privs where grantee='PUBLIC';
    看看结果是什么
      

  5.   

    然后我以PXGLADMIN登录PLSQL,我发现新建立的用户,可以看到系统中所有的表,用户及视图等信息。你看到的是哪些表和视图,怎么看的
      

  6.   

    以PXGLADMIN用户登录,看看
    select * from session_privs
    有什么结果,这个不可能没结果的再show user看下你登录的用户
    是否以as sysdba登录而实际登录了sys用户
      

  7.   

    以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
      

  8.   

    到新建的用户下查询
    select * from session_privs 
    第三次问你
    这个是最重要的问题,怎么都没有回答?
      

  9.   

    你查询的是session_privs视图吗。。应该只有1列的,你的结果有3列
    select * from session_roles 看看如果是在sqlplus下操作,执行show user看看
    如果用pl/sql developer,到command窗口执行show user;你是否在创建新用户的时候,以语句的方式或者管理界面里赋予其DBA用户权限
      

  10.   

    我把用户删除了,在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
      

  11.   

    以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
      

  12.   

    登录sys,执行:
    revoke dba from public;
      

  13.   

    还是不行,刚才一个哥们说,可能和PUBLIC用户有关系
      

  14.   

    这样建的用户就只能看到自己的用户看不到所有的表,但有个PUBLIC用户,如果它有所有权限,那新建的用户首先会获得PUBLIC的权限,这样就可以看到所有表了,需要将PUBLIC得收回,但这样前面建的用户需要重新授权,否则前面的所有用户的所有权限就都没有了这是他的原话,没太明白
      

  15.   

    狂浪,我问下,我在用普通用户查询session_privs,user_sys_privs,user_tab_privs这些字典时,提示权限不足,那我应该给予用户什么权限才能访问呢?