使用product_user_profile来实现用户权限的设定
2008-04-27 07:51
281 查看
使用product_user_profile来实现用户权限的设定
Author:Kamus
Mail:kamus@itpub.net
Date:2004-1
我们有时候在以普通用户登录SQL*Plus的时候,会碰到下面的错误提示:
Erroraccessingproduct_user_profile
Warning:productuserprofileinformationnotloaded!
YoumayneedtorunPUPBLD.SQLasSYSTEM
其实在实际意义上这只是一个警告而已,并不是真正的错误,遇到这个提示,并不会影响我们正常使用SQL*Plus,也不会对功能产生影响。
如果数据库是使用dbca创建的那么不用担心这个问题,通常是我们手动创建数据库的情况下,忘了执行一些脚本才导致出现这样的警告。product_user_profile其实有很强大的功能,这是SYSTEM模式下的一个表,在此表中存在的数据可以让客户端程序登入的时候检查是否在命令的执行上有什么限制。基本上我们是以它来限制SQL*Plus这个客户端程序(目前好像也只有这个程序才会去自动检查这张表:D)
如果不想看到这个警告,作如下操作:
以SYSTEM用户登入SQL*Plus,然后执行PUPBLD.SQL,这个文件通常在$ORACLE_HOME/sqlplus/admin目录中。
SQL>@$ORACLE_HOME/sqlplus/admin/pupbld.sql
执行完毕以后,可以descproduct_user_profile来验证一下改表已经创建,并且熟悉一下表的结构。
以上不是这篇小文章的重点,下面我们要利用这张表来限制SCOTT用户不能执行DROP命令,即使SCOTT用户拥有DROPTABLE的权限。
SQL>insertintoproduct_user_profile(
2 product,userid,attribute,char_value)
3 values(
4 'SQL*Plus','SCOT%','DROP','DISABLED');
1rowinserted
Executedin0.01seconds
SQL>commit;
Commitcomplete
Executedin0seconds
然后退出SYSTEM用户,用SCOTT用户登录,作个测试:
SQL>createtablet_test_profile(
2 idnumber);
Tablecreated.
Elapsed:00:00:00.10
SQL>droptablet_test_profle;
SP2-0544:invalidcommand:drop
这就是product_user_profile的作用,回顾一下:
1。如果我们把DROP改成CREATE或者UPDATE那么就对用户禁止了这些命令。
2。从上面的insert语句,我们可以看到对于用户的限制支持通配符,所有以SCOT开头的用户都不能执行指定的命令。
3。修改了product_user_profile内容,用户必须重新登录SQL*Plus,修改才会生效,也就是只有在登录的时候,SQL*Plus才会检查一遍product_user_profile表中的内容。
Author:Kamus
Mail:kamus@itpub.net
Date:2004-1
我们有时候在以普通用户登录SQL*Plus的时候,会碰到下面的错误提示:
Erroraccessingproduct_user_profile
Warning:productuserprofileinformationnotloaded!
YoumayneedtorunPUPBLD.SQLasSYSTEM
其实在实际意义上这只是一个警告而已,并不是真正的错误,遇到这个提示,并不会影响我们正常使用SQL*Plus,也不会对功能产生影响。
如果数据库是使用dbca创建的那么不用担心这个问题,通常是我们手动创建数据库的情况下,忘了执行一些脚本才导致出现这样的警告。product_user_profile其实有很强大的功能,这是SYSTEM模式下的一个表,在此表中存在的数据可以让客户端程序登入的时候检查是否在命令的执行上有什么限制。基本上我们是以它来限制SQL*Plus这个客户端程序(目前好像也只有这个程序才会去自动检查这张表:D)
如果不想看到这个警告,作如下操作:
以SYSTEM用户登入SQL*Plus,然后执行PUPBLD.SQL,这个文件通常在$ORACLE_HOME/sqlplus/admin目录中。
SQL>@$ORACLE_HOME/sqlplus/admin/pupbld.sql
执行完毕以后,可以descproduct_user_profile来验证一下改表已经创建,并且熟悉一下表的结构。
以上不是这篇小文章的重点,下面我们要利用这张表来限制SCOTT用户不能执行DROP命令,即使SCOTT用户拥有DROPTABLE的权限。
SQL>insertintoproduct_user_profile(
2 product,userid,attribute,char_value)
3 values(
4 'SQL*Plus','SCOT%','DROP','DISABLED');
1rowinserted
Executedin0.01seconds
SQL>commit;
Commitcomplete
Executedin0seconds
然后退出SYSTEM用户,用SCOTT用户登录,作个测试:
SQL>createtablet_test_profile(
2 idnumber);
Tablecreated.
Elapsed:00:00:00.10
SQL>droptablet_test_profle;
SP2-0544:invalidcommand:drop
这就是product_user_profile的作用,回顾一下:
1。如果我们把DROP改成CREATE或者UPDATE那么就对用户禁止了这些命令。
2。从上面的insert语句,我们可以看到对于用户的限制支持通配符,所有以SCOT开头的用户都不能执行指定的命令。
3。修改了product_user_profile内容,用户必须重新登录SQL*Plus,修改才会生效,也就是只有在登录的时候,SQL*Plus才会检查一遍product_user_profile表中的内容。
相关文章推荐
- 使用product_user_profile来实现用户权限的设定
- 使用product_user_profile来实现用户权限的设定
- 使用product_user_profile来实现用户权限的设定
- 使用product_user_profile来实现用户权限的设定(轉)
- 使用product_user_profile来实现用户权限的设定
- How to use the windows active directory to authenticate user via logon form 如何自定义权限系统,使用 active directory验证用户登录
- c#实现按用户角色分配菜单的使用权限(WinForm) 转载
- .NET 实现自定义ContextUser的Identity和Principal实现自定义用户信息,权限验证。
- .NET 实现自定义ContextUser的Identity和Principal实现自定义用户信息,权限验证。
- 微信公众号用java中控服务器-实现用户网页授权和获取使用JS-SDK权限
- Linux下使用ACL命令实现控制用户的目录访问权限
- 使用navicat 8实现创建数据库和导入数据 管理用户与权限[图文方法]
- 使用HttpContext中的User属性来实现用户身份验证之用户验证票篇
- 使用HttpContext中的User属性来实现用户身份验证之用户验证票篇
- 使用JavaEE的ServerAuthModule模块和web.xml进行相应配置,实现对用户的权限控制
- struts2 使用拦截器 实现用户权限的验证
- 邮件实用技巧十一:实现多样化的用户权限设定
- c#实现按用户角色分配菜单的使用权限(WinForm)
- 使用HttpContext的User属性来实现用户验证
- 使用HttpContext中的User属性来实现用户身份验证之用户验证票篇[转载]