در این قسمت از آموزش اوراکل بعد از آشنایی با کاربران در اوراکل قصد داریم آموزش مجوزهای سیستم (System Privileges) را یاد بگیریم.

یک system privilege در اوراکل به کاربر این اجازه را می دهد که یک سری عملیات و اقداماتی را در سطح دیتابیس انجام دهد مانند اجرای دستورات DDL به عنوان مثال کاربر بعد داشتن دسترسی system privilege را می تواند دستور CREATE TABLE را برای ساختن جدول در اسکیما خودش اقدام کند.

تعدادی از دسترسی های system privilege که کاربر می تواند داشته باشد به شرح ذیل می باشد :

آموزش اوراکل

مجوزها Privileges می توانند در داخلی قالبی مانند نقش roles گروه بندی و دسته بندی شوند. کاربرد مفید roles این که شامل مجموعه ای مجوزهاست Privileges و از طریق دو دستور CONNECT و RESOURCE می توانید به کاربر دسترسی و مجوز بدهید.

دستور CONNECT این مجوز و دسترسی را به کاربر می دهد که به دیتابیس متصل شود و دستور RESOURCE این دسترسی و مجوز را به کاربر می دهد که در دیتابیس هر نوع آبجکت دیتابیسی مانند جداول ، sequences و کد PL/SQL را ایجاد و اجرا کند.

دادن مجوزهای سیستمی System Privileges به کاربر

شما می توانید با استفاده از دستور GRANT مجوزهای سیستمی System Privileges را به کاربر مورد نظر اعطا کنید. مثال زیر نمونه ای از دستور اعطا مجوزهای سیستمی System Privileges به کاربری به نام steve می باشد.

آموزش اوراکل

همچنین شما با استفاده از دستور WITH ADMIN OPTION می توانید این امکان را فراهم کنید که به کاربری که مجوز سیستمی System Privileges را می دهید همان کاربر این دسترسی که دارد را به کاربری دیگری بدهد. به عنوان مثال نمونه ای از دستوری ما به کاربری به نام steve مجوز سیستمی به نام EXECUTE ANY PROCEDURE را بدهید و این امکان برای کاربر steve قراهم شده است که این مجوز را (به عنوان مدیر سیستم) می تواند به کاربر دیگری اعطا کند.

آموزش اوراکل

شما در مثال زیر دستوری می باشد که همانطور که مشخص است ما کاربری به نام steve به دیتابیس متصل شدیم و با توجه به دستور بالا کاربر می تواند مجوز سیستمی System Privileges به نام EXECUTE ANY PROCEDURE را به کاربر دیگری به نام gail اعطا کرده است.

آموزش اوراکل

همچنین شما میتوانید مجوزهای سیستمی System Privileges را به صورت کلی از طریق دستور PUBLIC به تمامی کاربران اعطا کنید. مثال زیر نمونه ای دستور می باشد که کاربر system به دیتابیس متصل شده و مجوز سیستمی System Privileges به نام EXECUTE ANY PROCEDURE to PUBLIC به تمامی کاربران در دیتابیس را میدهد.

و در نتیجه هر کاربری که به دیتابیس متصل شود مجوز سیستمی System Privileges به نام EXECUTE ANY PROCEDURE را دارد.

آموزش اوراکل

بررسی و نمایش مجوزهای سیستمی System Privileges داده شده به کاربران

شما در اوراکل بعد دادن دسترسی ها میتوانید از طریق جدولی به نام user_sys_privs مجوزهای سیستمی System Privileges که به کاربران داده شده با هر وضعیتی را به شما نمایش می دهد که ستون های این جدول به شرح زیر می باشد.

آموزش اوراکل

نکته : جدول user_sys_privs از جداول Data Dictionary در اوراکل می باشد و جزئی از جدول ساختاری و پایه ای اوراکل می باشد که در زمان ایجاد اوراکل ایجاد می شود. بطورکلی تمامی جداول این data dictionary جزئی از جداول پایه ای اوراکل می باشد.

مثال زیر از جدول user_sys_privs کوئری زده شده و نمایشی از مجوزهای سیستمی System Privileges به کاربران را نمایش دهد که بصورت نام کاربران و نام مجوز چیده شده است.

آموزش اوراکل

مثال زیر کاربری به نام gail به دیتابیس متصل شده و با زدن کوئری مربوطه به جدول user_sys_privs دسترسی مجوزهای سیستمی System Privileges که با هروضعیتی می باشد را نمایش می دهد و کاربر موردنظرر فقط مجوز های سیستمی خودش را می بیند.

آموزش اوراکل

استفاده کاربران از مجوزهای سیستمی System Privileges

زمانی که کاربر یک مجوز سیستمی System Privileges به آن اعطا شده است می تواند از آن مجوز برای انجام کارو وظایف خاصی را انجام دهد. به عنوان مثال کاربری به نام که مجوز سیستمی System Privileges به نام CREATE USER اعطا شده است پس می تواند در دیتابیس کاربر جدید ایجاد کند.

آموزش اوراکل

همین کاربر steve که مجوز CREATE USER فقط و فقط می تواند در دیتابیس کاربر ایجاد کند و اگر بخواهد کاربری که به نام roy ایجاد کرده است را حذف کند به آن خطای ORA-01031: insufficient privileges به معنی اینکه کاربرد دسترسی و مجوز آن را می دهد اعلام میکند.

آموزش اوراکل

گرفتن مجوز سیستمی System Privileges از کاربر

در اوراکل شما میتوانید با استفاده از دستور REVOKE از کاربری مجوز سیستمی system privilege بگیرید و اصطلاحا revoke کنید. به عنوان مثال شما با کاربری به نام system به دیتابیس متصل شده و مجوز سیستمی system privilege به نام CREATE TABLE از کاربری به نام steve بگیرید.

آموزش اوراکل

در مثال بعدی مجوز سیستمی system privilege به نام EXECUTE ANY PROCEDURE را از کاربری به نام steve گرفتید یا revoke کرده اید.

آموزش اوراکل

در حال حاضر پس از revoke کردن دو مجوز سیستمی system privilege از کاربر steve زمانی که به کاربر steve به دیتابیس متصل شوید و از جدول user_sys_privs اطلاعات دسترسی و مجوزها را نمایش می دهید میبینید که مجوزهای سیستمی system privilege گرفته شده از کاربر وضعیت no را دارد.

آموزش اوراکل

اطلاعات بیشتر در مورد system privilege