it-swarm.asia

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

Saya memiliki sebagai pengembang stasiun laptop dengan OS Windows XP Edisi Profesional, 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.

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

10
Chris Aldrich

Berdasarkan tautan terakhir di atas dalam edit saya untuk pertanyaan saya, saya menemukan jawaban saya. Saya tidak dapat men-Tweak akun sistem karena info masuk kami ke sistem kami berasal dari LDAP dan saya tidak bisa 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 yang 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 ke YA (tersedia dalam Paket Perbaiki 2 dan di atas). Maka saya tidak perlu mencoba untuk memberikan contoh pemilik DBADM. Secara otomatis diberikan bahwa untuk setiap database dikembalikan ke instance. Jika Anda tidak berada di Fix Pack 5, Anda harus memantulkan instance agar ini berlaku.

5
Chris Aldrich