跟屌絲學DB2 第二課 建立數(shù)據(jù)庫以及添加用戶
在安裝DB2 之后,就可以在 DB2 環(huán)境中創(chuàng)建自己的數(shù)據(jù)庫。首先考慮數(shù)據(jù)庫應該使用哪個實例。實例(instance) 提供一個由數(shù)據(jù)庫管理配置(DBM CFG)文件控制的邏輯層,可以在這里將多個數(shù)據(jù)庫分組在一起。DBM CFG 文件包含一組 DBM CFG 參數(shù),可以使用它們對實例進行調(diào)優(yōu)。在每個工作站上可以創(chuàng)建多個實例,在每個實例中可以創(chuàng)建多個數(shù)據(jù)庫。屌絲學習當然要創(chuàng)建屌絲實例
Windows先創(chuàng)建DB2實例的方法
在Windows下,通過如下命令即可創(chuàng)建DB2實例:db2icrt instance_name

屌絲這個實例就創(chuàng)建
將屌絲這個實例添加進數(shù)據(jù)庫中,如圖


需要注意的是,instance_name必須按照如下的規(guī)則命令:
1)不能大于 8 個字符
2)不能 以"sql"、"ibm"或"sys"開頭
3)不能以數(shù)字開頭或者包含 a-z、$、#、@、_ 或 0-9 之外的字符
如:
以下是代碼片段: DB2BIN>db2icrt insttest |
DB20000I DB2ICRT命令成功完成。
DB2BIN>db2ilist --列舉服務器上存在的 DB2 實例
以下是代碼片段: INSTTEST D:DB2BIN> |
要刪除一個實例,首先斷開所有數(shù)據(jù)庫連接,然后執(zhí)行以下命令停止實例:
以下是代碼片段: db2idrop -f instance_name |
比如:
以下是代碼片段: DB2BIN>db2idrop -f insttest |
DB20000I DB2IDROP命令成功完成。
DB2BIN>
察看實例配置文件
--默認
以下是代碼片段: DB2 GET DBM CFG |
--分屏顯示
以下是代碼片段: DB2 GET DBM CFG | More |
--將顯示結(jié)果存入 cfg.out 文件中
以下是代碼片段: DB2 GET DBM CFG > cfg.out |
接下來 給位屌絲DB就要創(chuàng)建數(shù)據(jù)庫了 記住有2種方式創(chuàng)建 第一種 就是用control center
如下所示,在創(chuàng)建數(shù)據(jù)庫時要考慮幾個因素。有幾種創(chuàng)建數(shù)據(jù)庫的方法。可以使用從 Control Center 調(diào)用的 Create Database 向?qū)В鼤龑в脩舴植絼?chuàng)建數(shù)據(jù)庫。如果您了解實際的 Create Database 命令的話,還可以從 DB2 Command Window、Command Editor 或命令行直接發(fā)出命令。
在這個示例中,從 DB2 First Steps Launch 面板的 Create Database 向?qū)В?/span>
1、啟動 DB2 Control Center。點擊 Start > All PRograms > IBM DB2 > General Administration Tools 并選擇 Control Center。當提示選擇 Control Center 視圖時,點擊 OK 選擇默認視圖(Advanced)。
2、點擊 All Databases(如圖 5 所示),然后點擊 Create New Database。Create Your Own Database 向?qū)Т蜷_。
從 Control Center 創(chuàng)建新數(shù)據(jù)庫

在 Create Your Own Database 向?qū)е校付〝?shù)據(jù)庫名和數(shù)據(jù)庫目錄的位置。輸入 HelloWld 作為數(shù)據(jù)庫名。指定 C:\ 作為默認路徑。輸入 hwld 作為數(shù)據(jù)庫別名。在 Comment 字段中輸入任何描述性的注釋。
4、選中 Enable Database for xml。XML 列只能在 UTF-8 代碼集(Unicode)數(shù)據(jù)庫中使用。所以要在數(shù)據(jù)庫中使用 XML,就必須創(chuàng)建 Unicode 數(shù)據(jù)庫。
5、不需要指定任何其他數(shù)據(jù)庫選項,所以選擇 Summary 面板,然后點擊 Show Command 來查看創(chuàng)建這個數(shù)據(jù)庫所用的 DB2 命令。
6、因為在這個數(shù)據(jù)庫中啟用了 XML,所以使用 CODESET UTF-8。點擊 Close。如果想將命令保存到文件中,供以后參考或重用,那么點擊 Save 而不是 Close。
7、在 Create New Database 窗口中,點擊 Finish 并等待向?qū)瓿刹僮鳌?/span>
在 DB2 創(chuàng)建數(shù)據(jù)庫時,它還創(chuàng)建以下東西:
1、在指定的驅(qū)動器或路徑上創(chuàng)建必要的數(shù)據(jù)庫目錄
2、創(chuàng)建一組默認的表空間,包括 SYSCAT、TEMPORARY 和 USER 表空間
3、在編目表空間中創(chuàng)建一組系統(tǒng)編目表和視圖
4、創(chuàng)建數(shù)據(jù)庫配置(DB CFG)文件并設(shè)置默認值
5、為數(shù)據(jù)庫恢復日志文件創(chuàng)建空間并分配它
6、為數(shù)據(jù)庫(如 CLI)和命令行處理器創(chuàng)建的幾個應用程序
使用 DB2 Control Center 檢查創(chuàng)建的數(shù)據(jù)庫
在 Control Center 左邊的面板中,找到并展開 All Systems 和 All Databases。看看是否能夠找到剛才創(chuàng)建的 HELLOWLD 數(shù)據(jù)庫。All Systems 提供了數(shù)據(jù)庫對象視圖,這些對象依次根據(jù)機器、實例和數(shù)據(jù)庫進行分組。在這個機器上只有一個實例,DB2。All Databases 提供了這個機器上的所有數(shù)據(jù)庫的快速查看。
圖 6. 查看新數(shù)據(jù)庫
如果您了解創(chuàng)建數(shù)據(jù)庫所用的 DB2 命令,那么可以使用在前面的 Create New Database 向?qū)Т翱谥斜4娴?CREATE DATABASE 命令并根據(jù)需要進行修改,然后從 DB2 命令行處理器發(fā)出 CREATE DATABASE 命令來創(chuàng)建數(shù)據(jù)庫。
選擇 Start > Run,輸入 db2cmd 并按 Enter。打開 DB2 命令行處理器窗口。要想獲得 create database 命令的幫助,可以在命令行窗口中輸入 db2 ? create database。
輸入 db2 CREATE DATABASE MYTESTDB ON C:。在命令成功完成之后,點擊 Control Center 主菜單中的 Selected 并點擊 Refresh。然后看看是否能夠在 Control Center 中找到新的數(shù)據(jù)庫 MYTESTDB。
在 DB2 命令窗口中輸入命令 db2 LIST DATABASE DIRECTORY。應該會看到 HELLOWLD 和 MYTESTDB 數(shù)據(jù)庫的數(shù)據(jù)庫項。
第二種 用命令創(chuàng)建;
db2 CREATE DATABASE diaosi ON C: USING CODESET UTF8 TERRITORY CN COLLATE USING SYSTEM
USING CODESET UTF8 指的是數(shù)據(jù)庫用utf8字符
為DB2數(shù)據(jù)庫創(chuàng)建新用戶帳戶并為其分配特定特權(quán)
目標
到目前為止,一直使用實例管理員帳戶(SYSADM)來執(zhí)行所有數(shù)據(jù)庫命令。這個帳戶對所有實用程序、數(shù)據(jù)和數(shù)據(jù)庫對象具有完全訪問權(quán)。因此,為了避免無意或有意的數(shù)據(jù)損失,必須要保護這個帳戶。在大多數(shù)情況下,需要創(chuàng)建不同的用戶和/或組,并授予有限的權(quán)限集。在本次實驗中,將創(chuàng)建一個新的用戶帳戶,然后為它分配特定的特權(quán)。
步驟
1.通過控制面板打開“管理”菜單項,打開“計算機管理”控制臺。
2.在窗口左邊的面板中,展開“系統(tǒng)工具”,然后展開“本地用戶和組”文件夾。右擊 “用戶”文件夾并選擇“新建用戶”菜單項。
圖 1. 打開計算機管理中用戶管理

3.在“用戶”對話框中,輸入以下信息(另外參見下圖)。在“用戶名”框中,輸入 customer。在“全名”框中,輸入 Customer1。在“描述”框中,輸入 A typical bookstore customer。在 “密碼” 和 “確認密碼” 框中,輸入 ibmdb2admin。取消 “用戶下次登錄時須修改密碼”選項。最后,單擊“創(chuàng)建”按鈕創(chuàng)建新用戶。
圖 2. 創(chuàng)建一個新用戶
4.確保使用 Control Center (控制中心) 的高級視圖。切換到高級視圖的方法是,從 Control Center (控制中心) Tools 菜單中選擇 Customize Control Center (控制中心) 菜單項,選擇 Advanced (高級) 選項并單擊“確定”按鈕。
圖 3. 打開控制中心高級視圖
5.在 Control Center (控制中心) 左邊面板中的對象樹中,依次展開所有數(shù)據(jù)庫> EXPRESS > Tables。
6.將所需的特權(quán)授予剛才創(chuàng)建的用戶。在 EXPRESS 數(shù)據(jù)庫的表列表中,右鍵單擊 CUSTOMERS 表并選擇 “特權(quán)” 菜單項,這時會顯示 “表特權(quán)” 對話框。
圖 4. 打開特權(quán)菜單項
7.單擊“添加用戶”按鈕并選擇剛才創(chuàng)建的 customer 用戶。單擊 “確定”按鈕關(guān)閉 “添加用戶” 對話框。
圖 5. 給表添加用戶
8.您會注意到,customer 用戶已經(jīng)添加到用戶列表中了,但是還沒有分配特權(quán)。為了授予這個用戶 SELECT、INSERT、UPDATE 和 DELETE 特權(quán),將所有下拉框改為 Yes。因特網(wǎng)客戶應該能夠查看/添加/更新/刪除他們的帳戶數(shù)據(jù)。我們不授予這個用戶其他權(quán)限,因為他們不需要那些權(quán)限。單擊 “確定” 按鈕關(guān)閉 “表特權(quán)” 對話框并接受所做的修改。
圖 6. 授予用戶權(quán)限
9.對于 BOOKS 和 SALES 表重復第 6-8 步。對于 BOOKS 表,只授予 SELECT 特權(quán),因為不應該允許客戶修改商店的庫存數(shù)據(jù)。對于 SALES 表,只授予 SELECT 和 INSERT 特權(quán)。客戶不應該有 DELETE 或 UPDATE 特權(quán),因為只有商店職員應該有權(quán)修改銷售數(shù)據(jù)。
10.使用上面創(chuàng)建的用戶 ID 連接數(shù)據(jù)庫。嘗試從 CUSTOMERS 表中選擇數(shù)據(jù),會發(fā)生什么情況?嘗試刪除或更新 SALES 表中的數(shù)據(jù),會發(fā)生什么情況?
在本次實驗中,我們只創(chuàng)建了一個用戶;但是,實際的應用程序可能包含許多不同類型的用戶。請您自己試著創(chuàng)建其他用戶并授予他們特權(quán)。還可以創(chuàng)建用戶組并向組授予特權(quán),這樣就不必向每個用戶分別授予特權(quán)。
轉(zhuǎn)帖者注:
創(chuàng)建完新用戶后,在使用該新用戶身份進行JDBC連接時需要注意SQL語句的寫法。比如:當初創(chuàng)建數(shù)據(jù)庫時使用的是Administer用戶身份。現(xiàn)在在該數(shù)據(jù)中增加了用戶——customer,那么在使用customer身份連接數(shù)據(jù)庫后的所有SQL語句均要求在表名前增加原數(shù)據(jù)庫表的創(chuàng)建者。
例如,SELECT * FROM Administer.TableName ; (注意紅色部分)不能寫成SELECT * FROM TableName ,否則會發(fā)生
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)
posted on 2012-12-05 18:30 順其自然EVO 閱讀(7578) 評論(0) 編輯 收藏 所屬分類: DB2