Tout d'abord, je souhaite exporter la base de données d'IBM DB2 AIX vers les fenêtres IBM DB2. Malheureusement, je ne peux pas utiliser la commande BACKUP et RESTORE en raison d'un problème de système d'exploitation différent. Je dois donc recourir à la commande db2move .
J'avais exporté le schéma myschema et toutes les tables de la base de données dbemp dans IBM DB2 AIX distant à l'aide de cette commande:
db2move dbemp export -sn myschema
Lorsque j'exécute cette commande, j'étais connecté en tant qu'utilisateur nommé dbuser1 .
Il génère un tas de fichiers dans le dossier actuel. J'attrape les fichiers dans ma machine locale (Windows) sur laquelle IBM DB2 LUW est installé.
Maintenant, dans IBM DB2 de ma machine locale, j'ai d'abord supprimé le schéma existant myschema en utilisant IBM Data Studio (j'avais également une base de données dbemp locale ).
J'ai ensuite importé les fichiers à l'aide de cette commande:
db2move dbemp import
Il a réussi à importer le schéma et les tables dans la base de données dbemp locale .
Lorsque j'ai effectué les actions ci-dessus, j'étais connecté en tant qu'utilisateur winuser1 .
J'ai également un utilisateur local nommé dbuser1 dans ma machine locale (Windows). Dans IBM Data Studio, j'ai créé un profil de connexion qui se connecte à dbemp local en utilisant l' utilisateur dbuser1 et je peux parcourir le schéma myschema et les tables, mais je ne peux pas parcourir les données de la table (j'ai une erreur de privilège). L'utilisateur winuser1 peut parcourir les données de la table, mais à des fins de développement, je dois me connecter à la base de données à l'aide de l'utilisateur dbuser1 .
J'ai donc découvert que je pouvais accorder des privilèges à un utilisateur sur la table comme ceci:
GRANT ALL ON myschema.table1 TO USER dbuser1
Le problème est que j'ai 100 tables, je ne veux pas taper ces lignes pour chaque table. Et malheureusement, il n'existe pas non plus de solution générique comme celle-ci:
GRANT ALL ON myschema.* TO USER dbuser1 -- this doesn't work
La question est donc de savoir comment accorder tous les privilèges sur toutes les tables d'un schéma à un utilisateur? Ou existe-t-il une meilleure solution alternative? peut-être en copiant tous les privilèges de winuser1 vers dbuser1 ?
db2 grant dataaccess
fonctionne. Cela ne me dérange pas de les accorder à tous les schémas car je suis dans un environnement de développement.Si vous utilisez un éditeur SQL comme Toad, ce script peut également vous aider. Vous pouvez copier / coller les résultats dans une nouvelle fenêtre.
la source
Vous pouvez également essayer (à l'aide d'un éditeur SQL):
la source