DB2: 为DB2数据库创建新用户帐户并为其分配特定特权

来源:互联网 发布:淘宝红人大金 编辑:程序博客网 时间:2024/04/29 17:38
 

目标

到目前为止,一直使用实例管理员帐户(SYSADM)来执行所有数据库命令。这个帐户对所有实用程序、数据和数据库对象具有完全访问权。因此,为了避免无意或有意的数据损失,必须要保护这个帐户。在大多数情况下,需要创建不同的用户和/或组,并授予有限的权限集。在本次实验中,将创建一个新的用户帐户,然后为它分配特定的特权。




回页首

步骤

1.通过控制面板打开“管理”菜单项,打开“计算机管理”控制台。

2.在窗口左边的面板中,展开“系统工具”,然后展开“本地用户和组”文件夹。右击 “用户”文件夹并选择“新建用户”菜单项。


图 1. 打开计算机管理中用户管理
打开计算机管理中用户管理

3.在“用户”对话框中,输入以下信息(另外参见下图)。在“用户名”框中,输入 customer。在“全名”框中,输入 Customer1。在“描述”框中,输入 A typical bookstore customer。在 “密码”“确认密码” 框中,输入 ibmdb2admin。取消 “用户下次登录时须修改密码”选项。最后,单击“创建”按钮创建新用户。


图 2. 创建一个新用户
创建一个新用户

4.确保使用 Control Center (控制中心) 的高级视图。切换到高级视图的方法是,从 Control Center(控制中心) Tools 菜单中选择 Customize Control Center(控制中心) 菜单项,选择 Advanced (高级) 选项并单击“确定”按钮。


图 3. 打开控制中心高级视图
打开控制中心高级视图

5.在 Control Center (控制中心) 左边面板中的对象树中,依次展开所有数据库> EXPRESS > Tables。

6.将所需的特权授予刚才创建的用户。在 EXPRESS 数据库的表列表中,右键单击 CUSTOMERS 表并选择 “特权” 菜单项,这时会显示 “表特权” 对话框。


图 4. 打开特权菜单项
打开特权菜单项

7.单击“添加用户”按钮并选择刚才创建的 customer 用户。单击 “确定”按钮关闭 “添加用户” 对话框。


图 5. 给表添加用户
给表添加用户

8.您会注意到,customer 用户已经添加到用户列表中了,但是还没有分配特权。为了授予这个用户 SELECT、INSERT、UPDATE 和 DELETE 特权,将所有下拉框改为Yes。因特网客户应该能够查看/添加/更新/删除他们的帐户数据。我们不授予这个用户其他权限,因为他们不需要那些权限。单击 “确定” 按钮关闭 “表特权” 对话框并接受所做的修改。


图 6. 授予用户权限
授予用户权限

9.对于 BOOKSSALES 表重复第 6-8 步。对于 BOOKS 表,只授予 SELECT 特权,因为不应该允许客户修改商店的库存数据。对于SALES 表,只授予 SELECT 和 INSERT 特权。客户不应该有 DELETE 或 UPDATE 特权,因为只有商店职员应该有权修改销售数据。

10.使用上面创建的用户 ID 连接数据库。尝试从 CUSTOMERS 表中选择数据,会发生什么情况?尝试删除或更新 SALES 表中的数据,会发生什么情况?

在本次实验中,我们只创建了一个用户;但是,实际的应用程序可能包含许多不同类型的用户。请您自己试着创建其他用户并授予他们特权。还可以创建用户组并向组授予特权,这样就不必向每个用户分别授予特权。

 

转帖者注:

    创建完新用户后,在使用该新用户身份进行JDBC连接时需要注意SQL语句的写法。比如:当初创建数据库时使用的是Administer用户身份。现在在该数据中增加了用户——customer,那么在使用customer身份连接数据库后的所有SQL语句均要求在表名前增加原数据库表的创建者。

例如,SELECT * FROM Administer.TableName ; (注意红色部分)不能写成SELECT * FROM TableName ,否则会发生

42704错误:

 

SQLException information
Error msg: DB2 SQL Error: SQLCODE=-204, SQLSTATE=42704, SQLERRMC=ADMIN.CONTACT, DRIVER=3.50.152
SQLSTATE: 42704
Error code: -204
com.ibm.db2.jcc.b.nm: DB2 SQL Error: SQLCODE=-204, SQLSTATE=42704, SQLERRMC=ADMIN.CONTACT, DRIVER=3.50.152
 at com.ibm.db2.jcc.b.wc.a(wc.java:579)
 at com.ibm.db2.jcc.b.wc.a(wc.java:57)
 at com.ibm.db2.jcc.b.wc.a(wc.java:126)
 at com.ibm.db2.jcc.b.tk.c(tk.java:1901)
 at com.ibm.db2.jcc.b.tk.d(tk.java:1889)
 at com.ibm.db2.jcc.b.tk.a(tk.java:1416)
 at com.ibm.db2.jcc.t4.db.g(db.java:138)
 at com.ibm.db2.jcc.t4.db.a(db.java:38)
 at com.ibm.db2.jcc.t4.t.a(t.java:32)
 at com.ibm.db2.jcc.t4.sb.h(sb.java:141)
 at com.ibm.db2.jcc.b.tk.N(tk.java:1387)
 at com.ibm.db2.jcc.b.tk.a(tk.java:2215)
 at com.ibm.db2.jcc.b.tk.a(tk.java:557)
 at com.ibm.db2.jcc.b.tk.executeQuery(tk.java:541)
 at com.EzJava.main(EzJava.java:45)
Error msg: DB2 SQL Error: SQLCODE=-727, SQLSTATE=56098, SQLERRMC=2;-204;42704;ADMIN.CONTACT, DRIVER=3.50.152
SQLSTATE: 56098
Error code: -727
com.ibm.db2.jcc.b.SqlException: DB2 SQL Error: SQLCODE=-727, SQLSTATE=56098, SQLERRMC=2;-204;42704;ADMIN.CONTACT, DRIVER=3.50.152
 at com.ibm.db2.jcc.b.wc.a(wc.java:55)
 at com.ibm.db2.jcc.b.wc.a(wc.java:126)
 at com.ibm.db2.jcc.b.tk.c(tk.java:1901)
 at com.ibm.db2.jcc.b.tk.a(tk.java:1443)
 at com.ibm.db2.jcc.t4.db.n(db.java:739)
 at com.ibm.db2.jcc.t4.db.i(db.java:257)
 at com.ibm.db2.jcc.t4.db.c(db.java:52)
 at com.ibm.db2.jcc.t4.t.c(t.java:44)
 at com.ibm.db2.jcc.t4.sb.i(sb.java:153)
 at com.ibm.db2.jcc.b.tk.P(tk.java:1438)
 at com.ibm.db2.jcc.b.tk.a(tk.java:2217)
 at com.ibm.db2.jcc.b.tk.a(tk.java:557)
 at com.ibm.db2.jcc.b.tk.executeQuery(tk.java:541)
 at com.EzJava.main(EzJava.java:45)

 

 

 

原创粉丝点击