Bagaimana cara saya memberikan semua hak istimewa ke db2admin lokal dengan DB2 9.7 di Windows?

10

Saya memiliki sebagai pengembang stasiun laptop dengan OS Windows XP Professional Edition, Paket Layanan 3.

Saya telah mengunduh dan menginstal paket perbaikan 4 IBM DB2 UDB 9.7, edisi Express-C.

Saya memiliki akun Windows lokal bernama db2admin yang saya gunakan sebagai administrator basis data lokal untuk pemasangan DB2 lokal saya (hanya untuk tujuan pengembang).

Saya bisa menjalankan yang berikut tanpa masalah saat menjalankan Command Window:

db2 attach to db2 user db2admin using xxxxxxxxxx

Itu memungkinkan saya untuk melampirkan contoh saya yang disebut DB2.

Saya dapat menjalankan perintah membuat database saya.

Saya kemudian mencoba untuk terhubung ke database untuk memberikan semua hak istimewa untuk akun db2admin saya di 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;

Namun ketika saya menjalankannya, DB2 memberi tahu saya bahwa akun pengguna windows saya yang sebenarnya (synprgcma) tidak memiliki wewenang untuk memberikan otoritas kepada pengguna db2admin.

Jadi jika saya mengubah skrip kedua sebagai berikut:

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;

Kemudian DB2 memberi tahu saya bahwa db2admin tidak dapat mencabut atau memberikan otoritas pada dirinya sendiri (sebenarnya ini memberitahu saya bahwa id tidak dapat mencabut atau memberikan otoritas pada dirinya sendiri).

Jadi saya bingung. Saya tidak memiliki masalah dengan instalasi DB2 saya sebelumnya (9.5, dan saya tidak ingat paket perbaikan saya sebelumnya).

Bagaimana cara saya memberikan otoritas yang diperlukan ke akun admin lokal? Saya yakin saya perlu ini untuk menjalankan perintah bind yang perlu saya lakukan selanjutnya:

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

Bantuan apa pun akan dihargai.

Sunting: Saya telah menemukan beberapa tautan berikut yang terkait dengan ini. Masih belum yakin bagaimana cara membuatnya bekerja, tetapi setidaknya saya telah menemukan beberapa dokumentasi.

Chris Aldrich
sumber

Jawaban:

5

Berdasarkan tautan terakhir di atas dalam edit saya untuk pertanyaan saya, saya menemukan jawaban saya. Saya tidak dapat mengubah akun sistem karena info masuk kami ke sistem kami berasal dari LDAP dan saya tidak dapat mengontrol grup dan apa yang tidak.

Jadi saya melakukan yang berikut:

  1. Membuka GUI DB2 (paling mudah dilakukan dengan cara ini).
  2. Terhubung ke database yang diinginkan sebagai db2admin.
  3. Menambahkan logon saya ke database sebagai pengguna.
  4. Berikan semua otoritas pada id itu (id saya).
  5. Memutuskan.
  6. Hubungkan ke database yang diinginkan sebagai id saya.
  7. Berikan semua otoritas ke db2admin.
  8. Memutuskan.

Voila! Log masuk db2admin sekarang sebagai semua otoritas.

EDIT:Saya akan meninggalkan hal di atas karena membantu saya belajar bagaimana melakukan beberapa hal menarik di DB2. Namun, saya telah belajar bahwa DBADM / SECADM dengan otoritas DATAACCESS dan ACCESSCTRL memberikan pemilik instance (dalam kasus saya id db2admin) memiliki semua otoritas yang diperlukan untuk berinteraksi dengan database. Saya sebenarnya bisa saja berkomentar garis hibah di atas dalam naskah. Itu yang tersisa dari skrip yang dijalankan terhadap versi DB2 yang lebih lama. Saya juga menemukan jika saya perlu memiliki pemilik contoh DBADM setelah melakukan pemulihan ke basis data A dari basis data B, paling mudah hanya dengan mengatur variabel registri DB2_RESTORE_GRANT_ADMIN_AUTHORITY menjadi YA (tersedia dalam Paket Pak 2 dan di atas). Maka saya tidak perlu mencoba untuk memberikan contoh pemilik DBADM. Secara otomatis diberikan bahwa untuk setiap database dikembalikan ke instance.

Chris Aldrich
sumber
Tidak yakin apa yang Anda maksud dengan GUI DB2. Apakah ada versi baris perintah yang bisa kita coba?
Minggu
@ sunk818 - langkah akan sama bahkan untuk baris perintah. Ini lebih berkaitan dengan bagaimana fungsi DB2 berkaitan dengan keamanan mulai dalam versi 9.7.
Chris Aldrich
Kekhawatiran saya berkaitan dengan memiliki akses SYSADM untuk membuat database ... Mungkin saya telah mengunjungi pertanyaan yang salah. ;)
Minggu
SYSADM selalu memiliki kemampuan untuk membuat basis data. Begitu juga SYSCTRL.
Chris Aldrich