در محیط CMD وارد نرمافزار SQLPLUS میشیم.
sqlplus
قویترین کاربری که در سطح بانکاطلاعاتی اوراکل داریم SYS است.
تعویض پسورد
برای تعویض پسورد توسط خود یوزر در بانکاطلاعاتی:
set password
یا در ورژنهای جدید اوراکل:
password
مسئله حق مالکیت
ما با ۲ نوع یوزر موقع نصب اوراکل آشنا شدیم، به تصویر زیر دقت کنید:
تصویر فوق نشان میدهد که مالک RDBMS کاربر Oracle است (در قسمت بالا معرفی نمودیم)
در سلسله مراتب قدرت کاربر ، کاربر sys و سپس system قرار دارند و پس از آنها کاربرانی که تعریف مینماییم.
اولین ورود DBA
برای اولین ورود DBA باید از یوزر SYS با رول SYSDBA استفاده کند:
SYS AS SYSDBA
نکته:شکل کلی اتصال به یوزر در شبکه از ORACLE CLIENT، همچنین در سرور فقط ORACLE SERVER نصب میشود.
SYS AS SYSDBA@LOCALHOST_ORCL
ایجاد کاربر جدید
ایجاد کاربر جدید در اوراکل 2 مرحله دارد :
- ایجاد کاربری
- اعطای دسترسی
CREATE USER GHAFFARI IDENTIFIED BY ASD512; GRANT DBA, CONNECT TO GHAFFARI;
کاربر ایجاد شده به لحاظ سطح دسترسی و قدرت معادل کاربر system در اوراکل بوده و همچنان کاربر sys قدرتمندتر از آنهاست.
اگر اوراکل شما CONTAINER است برای ساخت یوزر به صورت زیر عمل کنید: (یوزر به این ترتیب میتوانند به انواع PLUGABLE دیتابیسها که مطعلق به اون OCNTAINERاند لاگین کند.)
نکته: دیتابیس PLUGABLE نمیتواند به دیتابیس CONTAINER کانکت کند.
نکته: اگر یوزر روی CONTAINER ساخته شده باشه، دستور به PLUGABLE نرسیده باشه، PLUGABLE تو شبکه نباشه و ما بخوایم با یوزر CONTAINER که روی سطح دیتابیس CONTAINER وجود داره به دیتابیسهای PLUGABLE لاگین کنیم نمیشه و باید یوزر دستی اضافه کنیم که فقط امکان دسترسی به همون دیتابیس رو داره. همچنین اگر دیتابیس به شبکه وصل بشه یوزرها اگه یکسان باشند باهم MERGE میشوند و یوزر به یوزر CONTAINER تبدیل میشود.
نکته: هیچوقت نمیشه روی دیتابیسهای PLUGABLE یوزر CONTAINER تعریف کرد و فقط روی دیتابیس CONTAINER میشه یوزر CONTAINER تعریف کرد.
CREATE USER C##GHAFFARI IDENTIFIED BY ASD512;
نکته: یه تفاوتی میان ورژنهای 10G, 11G, 12c هستش، در برخی از ورژنها DBA شامل رول CONNECT شده و در برخی ورژنها نشده:
grant dba to username;
نکته: میتوانیم با دستور connect username با کاربر مورد نظر login نماییم.
SQL> CONNECT GHAFFARI Enter password: Connected. SQL>
برای اینکه بدانیم با چه کاربری connect شدهایم میتوانیم از دستور show user استفاده نمود.
SQL> SHOW USER USER is "GHAFFARI" SQL>
نکته: برای اینکه مطمئن شویم connect هستیم میتوانیم از select 2+2 from dual استفاده نماییم. در صورت پاسخ مثبت مطمئن هستیم که به برنامه connect هستیم.
SQL> SELECT 2+2 FROM DUAL; 2+2 ---------- 4 SQL>
حذف کاربر
با دستور drop user حذف کاربر انجام خواهد شد. در این حالت فقط کاربر حذف خواهد شد.
دقت شود کاربری با رول بالاتر مثل SYS این کار را میتواند انجام دهد.
SQL> DROP USER GHAFFARI; User dropped. SQL>
حذف کاربر با تمام نقشها
با این دستور اگر کاربر ما Schema باشد یعنی موجودیتی به کاربر انتصاب داده شده باشد هم حذف میکند.
SQL> CREATE USER GHAFFARI IDENTIFIED BY ASD512; User created. SQL> GRANT DBA, CONNECT TO GHAFFARI; Grant succeeded. SQL> DROP USER GHAFFARI CASCADE; User dropped.
باز پسگیری نقش
با دستور grant اعطای نقش صورت میپذیرد و با دستور Revoke بازپسگیری نقش انجام میگیرد. در مثال زیر نقشهای connect و dba به کاربر مربوطه اختصاص داده شده است و سپس نقش connect از کاربر پس گرفته شده است.
SQL> CREATE USER GHAFFARI IDENTIFIED BY ASD512; User created. SQL> GRANT DBA, CONNECT TO GHAFFARI; Grant succeeded. SQL> REVOKE CONNECT FROM GHAFFARI; Revoke succeeded. SQL>
ایجاد Role و اعطا
به صورت زیر یک Role جدید تعریف نموده و سپس آن را به کاربر اختصاص میدهیم. (دسترسی Select از جدول Sami.t1 به نقش modir اختصاص داده میشود و سپس نقش modir را به کاربر مربوطه اختصاص می دهیم.)
SQL> CREATE ROLE MODIR; Role created. SQL> CREATE TABLE GHAFFARI.T1(ID NUMBER, NAME VARCHAR2(20)); Table created. SQL> GRANT SELECT ON GHAFFARI.T1 TO MODIR 2 ; Grant succeeded. SQL> GRANT MODIR TO GHAFFARI; Grant succeeded.
در اینجا کاربر مربوطه اجازه Select را خواهد داشت ولی اجازه insert را ندارد .
SQL> INSERT INTO GHAFFARI.T1 (ID, NAME) VALUES (1, 'MAHDI'); 1 row created. SQL> INSERT INTO GHAFFARI.T1(ID, NAME) VALUES(2, 'MOHAMMAD'); 1 row created. SQL>
WITH ADMIN OPTION
چنانچه از این عبارت در انتهای اختصاص نقش استفاده کنیم به کاربر مربوطه اجازه میدهیم نقشی که در اختیار آن کاربر گذاشتهایم را به دیگر کاربران اختصاص دهد.
مثال: نقش modir ایجاد شده در مثال قبل GRANT modir TO ghaffari WITH ADMIN OPTION