原文地址:http://lpetr.org/blog/archives/simplify-the-db2-9-7-security-model
开始学习DB2 9.7, 在此版本中,DB2的安全模型与以往不同。安全管理员(SECADM)已从数据库管理员(DBADM)中分离了出来,并且不再默认具有查看数据权限。这样的默认安全机制在实践中是非常好的,特别是部署数据库用于金融产业。但是,对于一个新手来说,这样的设置就显得麻烦了。
在WinXP中,默认以SYSTEM用户打开控制中心时会遇到这样的错误:
SQL0551N "SYSTEM" does NOT have the required authorization OR privilege TO perform operation "SELECT" ON object "LEONSP.ACT".
SQLSTATE=42501
让我们通过赋予各种权限来补救这样的错误。
打开DB2命令行窗口。
用已经具有权限的用户连接数据库,比如我的是leonsp:
db2 connect TO samptest user leonsp USING password
然后给SYSTEM赋予所有的权限:
db2 GRANT DBADM, SECADM, CREATETAB, BINDADD, CONNECT, CREATE_NOT_FENCED_ROUTINE, IMPLICIT_SCHEMA, LOAD, CREATE_EXTERNAL_ROUTINE, QUIESCE_CONNECT ON DATABASE TO USER system
当你在你的Windows上安装DB2的时候有没有创建DB2ADMIN或者一些其他的ID?让我们同样赋予所有的权限:
db2 GRANT DBADM, SECADM, CREATETAB, BINDADD, CONNECT, CREATE_NOT_FENCED_ROUTINE, IMPLICIT_SCHEMA, LOAD, CREATE_EXTERNAL_ROUTINE, QUIESCE_CONNECT ON DATABASE TO USER db2admin
如此这般,你应该就不会再看到SELECT权限错误了。但是请注意,最好不要在生产环境中做这样的权限操作,因为这样做的话会导致安全性比默认的还低。