الانتقال إلى المحتوى

كيف يتم منح صلاحيه جدول لمستخدم أخر ؟


amkalisa

Recommended Posts

hi, i am a new DBA and try want from you to solve this problem:
first i create two user accounts A and B, then i create a table in A and want B to Access it( execute SELECT statements on A's Table)
so tell me what is privileges and roles required.

رابط هذا التعليق
شارك

السلام عليكم ورحمة الله وبركاته

اخي amkalisa , لنفترض ان المستخدم A لديه جدول بإسم locations ونريد ان نمنح

المستخدم B صلاحيه الاستعلام على هذا الجدول , لذلك سنقوم بتنفيذ الامر التالي :-

grant select on A.locations to B ;



طبعا يجب ان ينفذ هذا الامر مستخدم لديه صلاحيه DBA .

الان لو اراد المستخدم B الاستعلام عن بيانات جدول locations فيجب ان يكون استعلامه

بالطريقة التاليه

select * from A.locations ;



اي يجب ان يكتب اسم المستخدم صاحب الجدول واسم الجدول معاً , ولتفادي ذلك يجب ان نقوم

بإنشاء synonym للجدول locations لكي يستطيع ان يستخدمه المستخدم B بدون

ان يكتب إسم مالك الجدول المستخدم A بالطريقة التاليه :-

create public synonym location for A.location ;



ايضا يجب ان يقوم بتنفيذ هذا الامر مستخدم له صلاحيه DBA .

الان يستطيع المستخدم B الاستعلام عن جدول locations بالطريقه العاديه وهي :-

select * from locations ;




عمر باعقيل
كندا - مونتريال
[email protected]
MSN Messenger :-
[email protected]

رابط هذا التعليق
شارك

السلام عليكم ورحمة الله وبركاته

اخي amkalisa , لنفترض ان المستخدم A  لديه جدول بإسم locations ونريد ان نمنح

المستخدم B  صلاحيه الاستعلام على هذا الجدول , لذلك سنقوم بتنفيذ الامر التالي :-

grant select on A.locations to B ;



طبعا يجب ان ينفذ هذا الامر مستخدم لديه صلاحيه DBA .

الان لو اراد المستخدم B  الاستعلام عن بيانات جدول locations  فيجب ان يكون استعلامه

بالطريقة التاليه

select * from A.locations ;



اي يجب ان يكتب اسم المستخدم صاحب الجدول واسم الجدول معاً , ولتفادي ذلك يجب ان نقوم

بإنشاء  synonym للجدول locations  لكي يستطيع ان يستخدمه المستخدم B  بدون

ان يكتب إسم مالك الجدول المستخدم A بالطريقة التاليه :-

create public synonym location for A.location ;



ايضا يجب ان يقوم بتنفيذ هذا الامر مستخدم له صلاحيه DBA .

الان يستطيع المستخدم B  الاستعلام عن جدول locations  بالطريقه العاديه وهي :-

select * from locations ;




عمر باعقيل
كندا - مونتريال
[email protected]
MSN Messenger :-
[email protected]


Thank you very much Omer and i hope keeping e-mailling. i am ammar from iraq. and i am new in oracle and i want to learn it , so i am trying and now i reached a good step, soo keep in touch. and thank you very much.
رابط هذا التعليق
شارك

السلام عليكم ورحمة الله وبركاته

اخي amkalisa , لنفترض ان المستخدم A  لديه جدول بإسم locations ونريد ان نمنح

المستخدم B  صلاحيه الاستعلام على هذا الجدول , لذلك سنقوم بتنفيذ الامر التالي :-

grant select on A.locations to B ;



طبعا يجب ان ينفذ هذا الامر مستخدم لديه صلاحيه DBA .

الان لو اراد المستخدم B  الاستعلام عن بيانات جدول locations  فيجب ان يكون استعلامه

بالطريقة التاليه

select * from A.locations ;



اي يجب ان يكتب اسم المستخدم صاحب الجدول واسم الجدول معاً , ولتفادي ذلك يجب ان نقوم

بإنشاء  synonym للجدول locations  لكي يستطيع ان يستخدمه المستخدم B  بدون

ان يكتب إسم مالك الجدول المستخدم A بالطريقة التاليه :-

create public synonym location for A.location ;



ايضا يجب ان يقوم بتنفيذ هذا الامر مستخدم له صلاحيه DBA .

الان يستطيع المستخدم B  الاستعلام عن جدول locations  بالطريقه العاديه وهي :-

select * from locations ;




عمر باعقيل
كندا - مونتريال
[email protected]
MSN Messenger :-
[email protected]



يوجد خطأ في طريقة منح الصلاحية السابقة

select privilege on particular table or view is an


object privilege not a system privilege
the owner (user have the object) of the table can only grant privilege on the table

users have dba role can not grant any objects privilege on any objects that not in their schema

so
the user who can grant the select privilege is A.

note
you can grant this privilege with "grant option" to user B
so user B can grant this privilege to other user

connect a/password
grant select on locations to B with grant option;
connect b/password
grant select on a.locations to d;



[align=left]note
the "create public synonym" is system privilege and necessary to create public synonym and the role dba contian this privilege so any user have dba can create synonyms
so we need just "create public synonym" privilege to create public synonym not dba role


[/align]

رابط هذا التعليق
شارك

  • بعد 4 أسابيع...
  • بعد 8 شهور...

السلام عليكم ورحمة الله وبركاته،،
أخي وسيم (ZAK)

users have dba role can not grant any objects privilege on any objects that not in their schema

الرجاء مراجعة ما ذكرته !! لأنه إذا افترضنا أن اليوزر "C" يمتلك صلاحيات الـDBA Role (فقط)،، فانه بإمكانه إعطاء صلاحيات من نوع Object Privileges من أي SCHEMA لـSCHEMA أخري، مثال:
GRANT SELECT ON a.emp TO b;


إذاً ممكن نقول أن إهداء الصلاحية على أي Object تجوز فقط لمالك الـObject (مثال "A") أو الذي يملك الصلاحية GRANT ANY OBJECT PRIVILEGE والتي هي جزء من صلاحيات الـDBA Role

ملاحظة أخي ZAK:
فين إنت ما ظاهر ؟؟!! لأني بصراحة إستفدت منك كتير (بالرغم من قلة مشاركاتك - بالمقارنة مع تاريخ تسجيلك بالمنتدى) .

رابط هذا التعليق
شارك

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   تمت استعادة المحتوى السابق الخاص بك.   مسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

جاري التحميل
×
×
  • أضف...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية