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

屌絲這個實例就創建
將屌絲這個實例添加進數據庫中,如圖


需要注意的是,instance_name必須按照如下的規則命令:
1)不能大于 8 個字符
2)不能 以"sql"、"ibm"或"sys"開頭
3)不能以數字開頭或者包含 a-z、$、#、@、_ 或 0-9 之外的字符
如:
以下是代碼片段: DB2BIN>db2icrt insttest |
DB20000I DB2ICRT命令成功完成。
DB2BIN>db2ilist --列舉服務器上存在的 DB2 實例
以下是代碼片段: INSTTEST D:DB2BIN> |
要刪除一個實例,首先斷開所有數據庫連接,然后執行以下命令停止實例:
以下是代碼片段: db2idrop -f instance_name |
比如:
以下是代碼片段: DB2BIN>db2idrop -f insttest |
DB20000I DB2IDROP命令成功完成。
DB2BIN>
察看實例配置文件
--默認
以下是代碼片段: DB2 GET DBM CFG |
--分屏顯示
以下是代碼片段: DB2 GET DBM CFG | More |
--將顯示結果存入 cfg.out 文件中
以下是代碼片段: DB2 GET DBM CFG > cfg.out |
接下來 給位屌絲DB就要創建數據庫了 記住有2種方式創建 第一種 就是用control center
如下所示,在創建數據庫時要考慮幾個因素。有幾種創建數據庫的方法。可以使用從 Control Center 調用的 Create Database 向導,它會引導用戶分步創建數據庫。如果您了解實際的 Create Database 命令的話,還可以從 DB2 Command Window、Command Editor 或命令行直接發出命令。
在這個示例中,從 DB2 First Steps Launch 面板的 Create Database 向導:
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 向導打開。
從 Control Center 創建新數據庫

在 Create Your Own Database 向導中,指定數據庫名和數據庫目錄的位置。輸入 HelloWld 作為數據庫名。指定 C:\ 作為默認路徑。輸入 hwld 作為數據庫別名。在 Comment 字段中輸入任何描述性的注釋。
4、選中 Enable Database for xml。XML 列只能在 UTF-8 代碼集(Unicode)數據庫中使用。所以要在數據庫中使用 XML,就必須創建 Unicode 數據庫。
5、不需要指定任何其他數據庫選項,所以選擇 Summary 面板,然后點擊 Show Command 來查看創建這個數據庫所用的 DB2 命令。
6、因為在這個數據庫中啟用了 XML,所以使用 CODESET UTF-8。點擊 Close。如果想將命令保存到文件中,供以后參考或重用,那么點擊 Save 而不是 Close。
7、在 Create New Database 窗口中,點擊 Finish 并等待向導完成操作。
在 DB2 創建數據庫時,它還創建以下東西:
1、在指定的驅動器或路徑上創建必要的數據庫目錄
2、創建一組默認的表空間,包括 SYSCAT、TEMPORARY 和 USER 表空間
3、在編目表空間中創建一組系統編目表和視圖
4、創建數據庫配置(DB CFG)文件并設置默認值
5、為數據庫恢復日志文件創建空間并分配它
6、為數據庫(如 CLI)和命令行處理器創建的幾個應用程序
使用 DB2 Control Center 檢查創建的數據庫
在 Control Center 左邊的面板中,找到并展開 All Systems 和 All Databases。看看是否能夠找到剛才創建的 HELLOWLD 數據庫。All Systems 提供了數據庫對象視圖,這些對象依次根據機器、實例和數據庫進行分組。在這個機器上只有一個實例,DB2。All Databases 提供了這個機器上的所有數據庫的快速查看。
圖 6. 查看新數據庫
如果您了解創建數據庫所用的 DB2 命令,那么可以使用在前面的 Create New Database 向導窗口中保存的 CREATE DATABASE 命令并根據需要進行修改,然后從 DB2 命令行處理器發出 CREATE DATABASE 命令來創建數據庫。
選擇 Start > Run,輸入 db2cmd 并按 Enter。打開 DB2 命令行處理器窗口。要想獲得 create database 命令的幫助,可以在命令行窗口中輸入 db2 ? create database。
輸入 db2 CREATE DATABASE MYTESTDB ON C:。在命令成功完成之后,點擊 Control Center 主菜單中的 Selected 并點擊 Refresh。然后看看是否能夠在 Control Center 中找到新的數據庫 MYTESTDB。
在 DB2 命令窗口中輸入命令 db2 LIST DATABASE DIRECTORY。應該會看到 HELLOWLD 和 MYTESTDB 數據庫的數據庫項。
第二種 用命令創建;
db2 CREATE DATABASE diaosi ON C: USING CODESET UTF8 TERRITORY CN COLLATE USING SYSTEM
USING CODESET UTF8 指的是數據庫用utf8字符
為DB2數據庫創建新用戶帳戶并為其分配特定特權
目標
到目前為止,一直使用實例管理員帳戶(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.對于 BOOKS 和 SALES 表重復第 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)
posted on 2012-12-05 18:30 順其自然EVO 閱讀(7578) 評論(0) 編輯 收藏 所屬分類: DB2