Làm cách nào để tôi cấp tất cả các đặc quyền cho db2admin cục bộ với DB2 9.7 trên Windows?


10

Tôi có một trạm phát triển máy tính xách tay với OS Windows XP Professional Edition, Gói dịch vụ 3.

Tôi đã tải xuống và cài đặt gói sửa lỗi IBM DB2 UDB 9.7, phiên bản Express-C.

Tôi có một tài khoản Windows cục bộ có tên db2admin mà tôi đang sử dụng với tư cách là quản trị viên cơ sở dữ liệu cục bộ cho bản cài đặt DB2 cục bộ của tôi (chỉ dành cho nhà phát triển).

Tôi có thể chạy các mục sau mà không gặp sự cố khi chạy Cửa sổ lệnh:

db2 attach to db2 user db2admin using xxxxxxxxxx

Điều đó cho phép tôi đính kèm vào cá thể của mình được gọi là DB2.

Tôi có thể chạy các lệnh tạo cơ sở dữ liệu của tôi.

Sau đó, tôi cố gắng kết nối với cơ sở dữ liệu để cấp tất cả các đặc quyền cho tài khoản db2admin của tôi trong DB2.

db2 CONNECT TO MYDB;
SET SCHEMA DB2ADMIN;
db2 GRANT DBADM,CREATETAB,BINDADD,CONNECT,CREATE_NOT_FENCED_ROUTINE,IMPLICIT_SCHEMA,LOAD,CREATE_EXTERNAL_ROUTINE,QUIESCE_CONNECT,SECADM ON DATABASE TO USER DB2ADMIN;
CONNECT RESET;

Tuy nhiên, khi tôi chạy nó, DB2 cho tôi biết rằng tài khoản người dùng windows thực tế của tôi (synprgcma) không có quyền cấp quyền cho người dùng db2admin.

Vì vậy, nếu tôi thay đổi tập lệnh thứ hai thành như sau:

db2 CONNECT TO MYDB USER db2admin USING xxxxxxxx;
SET SCHEMA DB2ADMIN;
db2 GRANT DBADM,CREATETAB,BINDADD,CONNECT,CREATE_NOT_FENCED_ROUTINE,IMPLICIT_SCHEMA,LOAD,CREATE_EXTERNAL_ROUTINE,QUIESCE_CONNECT,SECADM ON DATABASE TO USER DB2ADMIN;
CONNECT RESET;

Sau đó, DB2 nói với tôi rằng db2admin không thể thu hồi hoặc cấp quyền cho chính nó (thực ra nó cho tôi biết rằng một id không thể thu hồi hoặc cấp quyền cho chính nó).

Thế là tôi bối rối. Tôi không gặp vấn đề này với bản cài đặt trước đây của tôi (9.5 và tôi không nhớ gói sửa lỗi nào tôi đã sử dụng).

Làm cách nào để tôi cấp các quyền hạn cần thiết cho tài khoản quản trị viên cục bộ? Tôi tin rằng tôi cần điều này để chạy lệnh liên kết mà tôi cần làm tiếp theo:

db2 CONNECT TO MYDB;
db2 bind @db2cli.lst blocking all grant public sqlerror continue CLIPKG 20;
db2 CONNECT RESET;

Bất kỳ trợ giúp sẽ được đánh giá cao.

Chỉnh sửa: Tôi đã tìm thấy một số liên kết sau đây liên quan đến điều này. Vẫn chưa chắc chắn làm thế nào để nó hoạt động, nhưng ít nhất tôi đã tìm thấy một số tài liệu.

Câu trả lời:


5

Dựa trên các liên kết cuối cùng trong phần chỉnh sửa câu hỏi của tôi, tôi đã tìm thấy câu trả lời của mình. Tôi không thể điều chỉnh tài khoản hệ thống vì các đăng nhập vào hệ thống của chúng tôi là từ LDAP và tôi không thể kiểm soát các nhóm và những gì không.

Vì vậy, tôi đã làm như sau:

  1. Đã mở GUI của DB2 (cách dễ nhất để làm theo cách này).
  2. Đã kết nối với cơ sở dữ liệu mong muốn dưới dạng db2admin.
  3. Đã thêm đăng nhập của tôi vào cơ sở dữ liệu như một người dùng.
  4. CẤP tất cả các cơ quan có thẩm quyền đối với id đó (id của tôi).
  5. Ngắt kết nối.
  6. Kết nối với cơ sở dữ liệu mong muốn như id của tôi.
  7. CẤP tất cả các cơ quan có thẩm quyền để db2admin.
  8. Ngắt kết nối.

Voila! Đăng nhập db2admin bây giờ là tất cả các cơ quan có thẩm quyền.

BIÊN TẬP:Tôi sẽ rời khỏi những điều trên vì nó giúp tôi học cách làm một số thứ thú vị trong DB2. Tuy nhiên, tôi đã biết rằng DBADM / SECADM với các cơ quan DATAACCESS và ACCESSCTRL đã cấp cho chủ sở hữu cá thể (trong trường hợp của tôi là id db2admin) có tất cả quyền hạn cần thiết để tương tác với cơ sở dữ liệu. Tôi thực sự có thể nhận xét những dòng cấp trên trong kịch bản. Những phần còn lại từ một tập lệnh chạy với phiên bản cũ hơn của DB2. Tôi cũng đã tìm thấy nếu tôi cần phải có chủ sở hữu cá thể DBADM sau khi thực hiện khôi phục cơ sở dữ liệu A từ cơ sở dữ liệu B, cách dễ nhất là đặt biến đăng ký DB2_RESTORE_GRANT_ADMIN_AUTHORITY thành CÓ (có sẵn trong Gói sửa lỗi 2 trở lên). Sau đó, tôi không phải cố gắng cấp DBADM cho chủ sở hữu cá thể. Nó tự động được cấp cho bất kỳ cơ sở dữ liệu nào được khôi phục vào thể hiện.


Không chắc chắn về ý nghĩa của GUI GUI. Có phiên bản dòng lệnh nào chúng ta có thể thử không?
CN

@ sunk818 - các bước sẽ giống nhau ngay cả đối với dòng lệnh. Nó liên quan nhiều hơn đến cách các chức năng của DB2 liên quan đến bảo mật bắt đầu trong phiên bản 9.7.
Chris Aldrich

Mối quan tâm của tôi là phải làm gì với việc có quyền truy cập SYSADM để tạo cơ sở dữ liệu ... Có lẽ tôi đã truy cập câu hỏi sai. ;)
CN

SYSADM luôn có khả năng tạo cơ sở dữ liệu. SYSCTRL cũng vậy.
Chris Aldrich
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.