Шаг 102 - Oracle - Пользователь (схема) и ее модификация

Создание пользователя мы с вами освоили. Давайте рассмотрим как уже созданного пользователя можно видоизменять. Допустим, вы хотите поменять ему пароль. Например, при создании БД пользователи SYS и SYSTEM получают пароли по умолчанию, которые просто необходимо заменить сразу же после создания БД!!! Иначе любой злоумышленник знакомый с БД Oracle может нанести вам большой ущерб!!! Для того, чтобы изменить пароль необходимо использовать команду ALTER - это так же довольно обширная команда и рассматривать все, что она может мы пока не будем. Сразу стоит отметить, что Oracle не допускает пароли типа 123456 или 543kolobok. Например, попробуйте следующее:

ALTER USER DUMMY IDENTIFIED BY 123456
/

Получаем:

ALTER USER DUMMY IDENTIFIED BY 123456
                               *
ошибка в строке 1:
ORA-00988: отсутствует или неверен пароль (пароли)

Или:

ALTER USER DUMMY IDENTIFIED BY 543kolobok
/

Получаем:

ALTER USER DUMMY IDENTIFIED BY 543kolobok
                               *
ошибка в строке 1:
ORA-00988: отсутствует или неверен пароль (пароли)

То есть пароли в Oracle должны начинаться с буквы, а не с цифры! Но в середине или в конце цифры применять можно! Я к стати до сих пор не могу понять, почему они так сделали? Хотя оставим это на усмотрение Oracle Inc. :) Давайте изменим пароль для схемы DUMMY с DUMB на PIONER4:

ALTER USER DUMMY IDENTIFIED BY PIONER4
/

Получаем:

SQL> ALTER USER DUMMY IDENTIFIED BY PIONER4
  2  /

Пользователь изменен.

Вот теперь все верно! Пароль нашего пользователя изменен и мы можем в этом убедиться:

CONNECT DUMMY/PIONER4@PROBA

Получаем:

SQL> CONNECT DUMMY/PIONER4@PROBA
Соединено.

Есть контакт! Таким же образом я рекомендую изменить пароли по умолчанию у схем SYS и SYSTEM. А, пока вернем коннект пользователю SYSTEM:

SQL> CONNECT SYSTEM/MANAGER@PROBA
Соединено.

С помощью команды ALTER - можно так же менять квоты пользователя в табличных пространствах. Например, урезать DUMMY за плохое поведение квоту на табличном пространстве USERS до 50 Мб:

ALTER USER DUMMY 
QUOTA 50M ON USERS
/

Получаем:

SQL> ALTER USER DUMMY 
  2  QUOTA 50M ON USERS
  3  /

Пользователь изменен.

Теперь DUMMY не выйдет за пределы 50 Мб. Чего ему вполне достаточно для нашего примера. Рассмотрим следующее понятие применимое к схеме БД, а именно профиль (Profile). С помощью профилей можно ограничить количество ресурсов системы и БД доступных для пользователя, а так же управлять ограничениями налагаемыми паролями. Если пользователю не назначен профиль по умолчанию, то будет использовать профиль DEFAULT (почти каламбур!).

Давайте создадим свой профиль и назначим его нашему пользователю:

CREATE PROFILE TODUMMY LIMIT
PASSWORD_LIFE_TIME 180;
/

Получаем:

SQL> CREATE PROFILE TODUMMY LIMIT
  2  PASSWORD_LIFE_TIME 180;

Профиль создан.

Созданный нами профиль ограничивает срок действия пароля до 180 дней. Давайте, определим этот профиль для пользователя DUMMY:

ALTER USER DUMMY
PROFILE TODUMMY
/

Получаем:

SQL> ALTER USER DUMMY
  2  PROFILE TODUMMY
  3  /
  
Пользователь изменен.

Теперь срок действия пароля PIONER4 в схеме DUMMY будет всего 180 дней. А, после этого БД не будет принимать регистрации с данным паролем. При создании профилей используется ряд ограничивающих ресурсов. Чуть позже мы их опишем. Допустим, если у вас есть необходимость заблокировать определенного пользователя системы, это возможно сделать, применив все тот же ALTER USER:

ALTER USER DUMMY ACCOUNT LOCK
/

Получим заблокированного пользователя:

SQL> ALTER USER DUMMY ACCOUNT LOCK
  2  /
  
Пользователь изменен.

И соответственно разблокировать пользователя:

ALTER USER DUMMY ACCOUNT UNLOCK
/

Получим заблокированного пользователя:

SQL> ALTER USER DUMMY ACCOUNT UNLOCK
  2  /
  
Пользователь изменен.

Давайте рассмотрим так же такое понятие неразрывно связанное с пользователями БД, как роль (role). По своей сути роль это некая группа, в которой объединяются несколько привилегий. При использовании ролей можно изменять уровни привилегий для нескольких пользователей одновременно, что упрощает процесс администрирования в БД имеющей несколько сот пользователей. Для примера создадим роль DMROLE:

CREATE ROLE DMROLE
/

Получаем:

SQL> CREATE ROLE DMROLE
  2  /

Роль создана.

Пока это "пустая" роль. Теперь назначаем ей ряд привилегий с помощью оператора GRANT, например ALTER SESSION:

GRANT ALTER SESSION TO DMROLE
/

Получаем:

SQL> GRANT ALTER SESSION TO DMROLE
  2  /
  
Привилегии предоставлены.

А вот теперь отпишем эту роль для нашего пользователя DUMMY конечно же с помощью оператора GRANT:

GRANT DMROLE TO DUMMY
/

Получаем:

SQL> GRANT DMROLE TO DUMMY
  2  /
  
Привилегии предоставлены.

Вот теперь схема DUMMY может использовать привилегию ALTER SESSION. И конечно же, самое главное - "Удаление пользователя"! Удалить пользователя и все объекты его схемы достаточно просто:

SQL> DROP USER DUMMY CASCADE
  2  /

Пользователь удален.

Ключевое слово CASCADE означает удалить все связанное со схемой (пользователем). Что то, как то грустно все у нас кончается. :) Таким образом, теперь для вас я думаю, стала яснее картина создания схемы (пользователя) и работа с ней. Стоит отметить к слову, что назначение ролей пользователю БД не всегда оправдано, но как я уже сказал значительно облегчает администрирование. Думаю, вы уже заметили, что мы с вами работаем пока только через SQL*Plus. Есть и более продвинутые инструменты для администрирования БД Oracle, такое мощное средство как, например Enterprise Manager. Но это тема для отдельного рассказа. Да и пока его использование нам не столь необходимо. А вот вам задание создайте собственного пользователя и несколько объектов в нем и расскажите мне, что у вас получилось! Дерзайте! :)


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Летучий Сергей - 27.02.2004