الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

اريد المساعدة-كيف الدخول من حساب مستخدم الى اخرفي الاوراكل

بدأه ابو عزت اليماني في 13 أبريل 2010 · 1 رد · 2,266 مشاهدة · في قسم إدارة قاعدة البيانات أوراكل
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

سلام عليكم

الاخوة الاعضاء والمشرفيين ارجو ان تكونو في اتم الصحة

الحقيقة

الدكتور كلفنا بااالبحث عن كيفية الدخول من حساب مستخدم الى حساب مستخدم اخر في الاوراكل

صراحة بحث في كل ركن في النت لم اجد شي

بس قلت اكيد ما القيها الا هان من كان عندة معلومة ياريت يرد على الموضوع بسرعة ولة جزيل الشكر

او

عندة معلومة عن كيفية اداةالدالة public and privite

بمعنى الدالة العامة ودالة الخصوصية

وشكرا لكم

  1. 33

تم تعديل هذه المشاركة بواسطة ابو عزت اليماني في 13 أبريل 2010 في 23:33

#2

اخي العزيز

هذه تريده يكون عن طريق اعطاء الصلاحيات

و يكمنك ان تعطي صلاحيات كامله او جزائيه

وهذه طريقه تتم عند طريقه الامر GRANT

هنا شرح لكل ا تريده

الصلاحيات (Privilege):

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

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

هناك نوعن من الصلاحيات :-

1- System:- وهو لتمكين المستخدمين من انجاز اعمال معينة على قاعدة البيانات .

وهناك اكثر من 700 صلاحية System Privileges على قاعدة اليبانات ، على سبيل المثال :

SYSDBA & SYSOPER : هذه الصلاحيات تسمح للمستخدم إغلاق وفتح قاعدة البيانات.

CREATE TABLESPACE : تسمح للمستخدم إنشاء Tablespace.

عموماً يمكن استعراض كل الصلاحيات System Privileges المتاحة لمدير قاعدة البيانات عن طريق الاستعلام الاتى :-

ولنفترض أننا نريد منح بعض الصلاحيات System Privileges للمستخدم TEST .

هكذا منحنا المستخدم TEST صلاحية إنشاء الTablespace .

يجب مراعاة الكلمة ANY عند منح الصلاحيات ، ولتوضيح هذا المعنى نلاحظ الفرق بين الصلاحيتين :

SELECT TABLE: تسمح للمستخدم عمل SELECT على الجداول التى يملكها المستخدم.

SELECT ANY TABLE: تسمح للمستخدم عمل استعلام SELECT على الجداول التى يملكها المستخدمين الاخرين.

هناك خيار عند منح الصلاحيات System Privileges للمستخدم وهو الخيار WITH ADMIN OPTION.

هذا الخيار يعنى ان المستخدم بعد أن يملك الصلاحية يستطيع منحها لغيره من المستخدمين .

المستخدم TEST الان يملك الصلاحية ALTER SYSTEM ويستطيع منحها لغيره من المستخدمين .

هنااك بعض الصلاحيات التى يجب ان لا تمنح الى لمديرى قاعدة البيانات ويجب مراعاة السرية عند المنح مثلاً (SYSDBA & SYSOPER & RESTRICTED SESSION & ALTER DATABASE) وغيره من الصلاحيات التى يجب أن تكون فقط لمدراء قاعدة البيانات ..

بالطبع يمكن سحب الصلاحيات من المستخدمين ، ولنفترض أننا نريد سحب صلاحية CREATE TABLESPACE من المستخدم TEST.

تخيل معى هذا السناريو وهو أن مدير قاعدة البيانات منح المستخدم TEST صلاحية CREATE TABLESPACE عن طريق الخيار WITH ADMIN OPTION ، قام المستخدم TEST بإنشاء Tablespace ومن ثم منح هذه الصلاحية لمستخدم اخر اسمه TEST1.

اراد مدير قاعدة البيانات سحب الصلاحية CREATE TABLESPACE من المستخدم TEST.

اولا سيستم سحب الصلاحية من المستخدم دون التاثير على المهام التى نفذها بواسطة هذه الصلاحية وهى هنا انشاء الTablespace.

ثانياً : المستخدم TEST1 لا يتاثر بسحب الصلاحيات من المستخدم TEST

هذا المستخدم يستطيع معرفة ما يمكله من صلاحيات System Privileges عن طريق الإستعلام :-

للإستعلام :

DBA_ROLES

USER_ROLE_PRIVS

DBA_ROLE_PRIVS

ROLE_ROLE_PRIVS

ROLE_SYS_PRIVS

ROLE_TAB_PRIVS

SESSION_PRIVS

2- Privileges Object:- وهو لتمكين المستخدم للوصول واستعمال الكائن المعين ، بدون هذه الصلاحيات المستخدم له الصلاحيات على الكائنات التى يملكها فقط .

المستخدم فى قاعدة البيانات له صلاحيات بالطبع على الكائنات التى يملكها ، يستطيع المستخدم ان يمنح صلاحيات لمستخدم اخر للوصول للكائنات التى يملكها ، وكذلك مدير قاعدة البينات يستطيع منح صلاحيات للمستخدمين للوصول لكائنات يملكها مستخدم اخر .

نفترض ان المستخدم TEST يملك جدول اسمه EXAMPLE ، هذا المستخدم يريد منح صلاحية SELECT على هذا الجدول للمستخدم TEST1.

ماذا لو اراد مدير قاعدة البيانات منح صلاحية SELECT على الجدول EXAMPLE الذى يمتلكه المستخدم TEST للمستخدم TEST1.

كذلك يمكن استخدام الخيار WITH GRANT OPTION عند منح الصلاحيات Objects Privileges إشارة إلى أن هذا المستخدم بعد ان يملك هذه الصلاحية يمكن أن يمنحها غيره من المستخدمين .

الان المستخدم TEST1 يستطيع منح صلاحية SELECT على الجدول EXAMPLE الذى يملكه المستخدم TEST لغيره من المستخدمين .

ماذا لو اراد المستخدم TEST سحب صلاحية الSELECT على الجدول EXAMPLE الذى يملكه من المستخدم TEST1 مع ملاحظة ان المستخدم TEST1 منح هذه الصلاحية لغيره من المستخدمين ولنفترض انه TEST2 ، النتيجة هى ان الصلاحية ستسحب من المستخدم TEST1 وكذلك كل المستخدمين الممنوحين الصلاحية عن طريق المستخدم TEST1 ؛ وهنا هو المستخدم TEST2 .

سنتابع هذا السناريو عملياً :-

نحن الان نعمل على المستخدم TEST.

المستخدم TEST يملك جدولاً واحداً هو EXAMPLE.

الان المستخدم TEST سيمنح صلاحية SELECT على الجدول EXAMPLE الذى يمتلكه للمستخدم TEST1.

الان عن طريق المستخدم TEST1 يمكن عمل SELECT على الجدول اعلاه :

الان المستخدم TEST1 يستطيع منح صلاحية SELECT على الجدول EXAMPLE الذى يمتلكه المستخدم TEST للمستخدم TEST2.

الان المستخدم TEST2 يستطيع عمل SELECT على الجدول EXAMPLE .

الان نقوم بسحب الصلاحية من المستخدم TEST1 .

عن طريق المستخدم TEST1 نقوم بعمل SELECT للجدول EXAMPLE .

لاحظ ان المستخدم فقد صلاحية عمل اسنعلام SELECT على الجدول EXAMPLE .

ماذا عن المستخدم TEST2.

كذلك المستخدم TEST2 لا يملك صلاحية الإستعلام على الجدول EXAMPLE .

يمكن منح الصلاحية على مستوى العمود ، مثلاً :

يمكن الاستعلام عن الObjects Privileges بعدة طرق منها :

DBA_TAB_PRIVS

ALL_TAB_PRIVS

USER_TAB_PRIV

DBA_COL_PRIVS

ALL_COL_PRIVS

USER_COL_PRIVS

SESSION_PRIVS

ROLES:-

تخيل معى انك تعمل مدير لقاعدة بيانات بها اكثر من 100 مستخدم ، هؤلاء المستخدمين على مستويات مختلفة من الصلاحيات ، ولنفترض انهم على خمسة مستويات .

ما العمل إذاً ؟ هل تمنح كل مستخدم صلاحياته بمفرده ؟ يلزمك إذاً عملاً شاقاً طويلاً .

الحل بكل بساطة هو فى الROLES.

الفكرة هى انه يمكن دمج مجموعة من الصلاحيات فى كائن واحد يسمى ROLE ، فالسناريو السابق لمدير قاعدة البينات الذى يدير قاعدة بيانات بها اكثر من 100 مستخدم على مستويات مختلفة وهى خمسة مستويات ابسط مما تتخيل ، يلزمنا الامرإنشاء خمسة من الROLES بعد ذلك نمنح الصلاحيات لهذه الROLES حسب المستويات ومن ثم منحها للمستخدمين .

هذا الحل يسهل علينا عملية ادارة الصلاحيات فبدل من ادارة اكثر من 100 مستخدم يلزمنا الامر ادارة خمسة من الROLES.

كذلك عند تعديل اى من الROLES فإن التعديل ينعكس اليا على المستخدمين فيسهل علينا عملية التعديل ، كذلك هذه العملية تحسن الأداة .

ولنفترض اننا نريد إنشاء ROLE جديدة تسمى OBAY، هذه الROLE نمنحها بعض الصلاحيات ولتكن CONNECT & RESOURCE ، بعد ذلك نمنح هذه الROLE للمستخدم TEST.

يجب مراعاة أن إسم الROLE ان يكون فريداً فى قاعدة البيانات بحيث يكون الاسم لم يستعمل كمستخدم ولا كRoles فى قاعدة البيانات.

بالطبع يمكن انشاء ROLE ومنحها درجة من السرية عن طريق منحها كلمة سر للتحقق .

الان نمنح هذه الROLE بعض الصلاحيات .

نمنح هذه الROLE للمستخدم TEST.

ملاحظة : يمكن اختيار الخيار WITH ADMIN OPTION عند منح الROLE . هذا الخيار يمكن المستخدم بعد امتلاك الROLES منحها لغيره من المستخدمين .

يمكن سحب الROLE من المستخدم بنفس طريقة سحب الSystem Privilege .

كذلك يمكن اجراء تعديلات على الROLES ولنفترض مثلاً اننا نريد عمل كلمة سر لل OBAY ROLE .

يمكن حذف الROLE عن طريق الامر .

عند حذف الROLE يقوم ORACLE SERVER بحذف هذه الROLE من كل المستخدمين الذين مُنحوا هذا الROLE الياً.

للامانه

هذه منقول من كتاب ابي صلاح ميرغني

من هذه الرابط يمكنك تحميل الكتاب

/index.php?showtopic=165020

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…