سؤال

ومع ينفورميكس يمكنني grant select على طاولة مثل؛

grant select on 'dba'.mytable to someuser as dba;

وكيف يمكنني القيام بذلك على كافة الجداول في قاعدة البيانات؟

هل كانت مفيدة؟

المحلول

وليس هناك طريقة بسيطة للقيام بذلك (إما في مستوى SQL أو في ينفورميكس)، لكنه عادة ليس من الضروري منذ يتم منح هذا الامتياز محددة عادة بشكل افتراضي. ومع ذلك، وأتصور أنه في الحقيقة تريد القيام بعمليات أكثر عامة جدا، وتريد أن تعرف ما هي الخيارات هناك.

واعتمادا على ما كنت تهدف إلى القيام به، وكيف وقد وضعت النظام الخاص بك، يمكنك تحقيق أهدافك بطرق مختلفة.

القوة الغاشمة - إجابة مباشرة على السؤال

 SELECT 'GRANT SELECT ON "' || TRIM(owner) || '".' || TRIM(tabname) ||
        ' TO someuser AS dba;'
     FROM "informix".systables
     WHERE tabid >= 100;

وخذ الإخراج من هذا ويطعمه في البرنامج. يمكنني استخدام SQLCMD عن العمل، لأسباب ليس أقلها أنها لا تولد الناتج غير المرغوب فيه:

sqlcmd -d dbname -e "
 SELECT 'GRANT SELECT ON \"' || TRIM(owner) || '\".' || TRIM(tabname) ||
        ' TO someuser AS dba;'
     FROM "informix".systables
     WHERE tabid >= 100;" |
sqlcmd -d dbname -f -

وهناك حاجة إلى الخطوط المائلة العكسية إضافية للتغلب على القشرة. الخيارات "-f -" ليست ضرورية تماما، ولكن جعلها صريحة من شأنها أن SQLCMD الثاني قراءة من الإدخال القياسي. إذا كنت تستخدم DB-Access لديك ما يدعو للقلق إسهاب أنه يولد - والذي هو السبب في أنني كتبت SQLCMD في المقام الأول

ومن الواضح أن هذا الحل يمكن إلى حد ما أن بسهولة كتابتها وتعميمها - عليك أن تكون حذرا مع استخدامك لونقلت

.

استخدام الأدوار

وثمة خيار آخر هو خلق الدور الذي لديه كل الأذونات التي تريد، ومن ثم منح هذا الدور للمستخدمين كما هو مطلوب. الجانب السلبي لذلك هو أن البرنامج يحتاج إلى تعيين دور لدرجة أن الناس تربط يكون هذا الامتياز. احتمال واحد هو تعيين حدد فقط دور إلى دور الافتراضية لكل مستخدم.

استخدام خادم ستوديو جافا الطبعة

SSJE ديه أدوات إدارة الامتياز لتبسيط هذه المهمة.

استخدام المفتوحة مشرف جدا

OAT ديه أدوات للمساعدة في إدارة الامتياز.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top