Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Введение в СУБД HyTech.doc
Скачиваний:
11
Добавлен:
01.03.2025
Размер:
2.67 Mб
Скачать

Назначение/отзыв роли пользователю или другой роли

Оператор grant передает привилегии от одной или нескольких ролей-источников, одной или нескольким приемникам (ролям или пользователям).

Формат вызова:

grant Роль-источник1,Роль-источник2,...   to Приемник1,Приемник2,...;

Аргументы:

Аргумент

Значение

Роль-источник

Роль, привилегии из которой передаются перечисленным приемникам (ролям или пользователям). Роль-источник предварительно должна быть создана, но привилегии можно передать роли-источнику позже.

Приемник

Пользователь или роль, которая получит все привилегии, назначенные роли-источнику. Пользователь-приемник или роль-приемник получит привилегии, назначенные роли-источнику после выполнения оператора grant.

Для создания роли необходимо выполнение одного из условий:

  • Пользователь является администратором базы данных;

  • Пользователь получил право на создание пользователей (привилегия create role) с помощью оператора grant create role.

Пример:

Передать привилегии, назначенные роли ROLE_SKLAD, ролям ROLE_BUCH и ROLE_KLAD:

grant ROLE_SKLAD to ROLE_BUCH,ROLE_KLAD;

Передать привилегии, назначенные роли ROLE_BUCH, пользователю USER_KROTOV:

grant ROLE_BUCH to USER_KROTOV;

Установка/изменение пароля на чтение/запись данных в таблицу

Для установки пароля на чтение данных из таблицы используется функция setrdpswd. Пока не вызвана эта функция, все таблицы открываются без пароля. После вызова функции setrdpswd все открытия таблиц (постоянных и временных) будут производиться с указанным паролем на чтение. Установленный пароль будут использовать SQL операторы:

  • open table;

  • create table;

  • drop table;

  • pack table;

  • create index;

  • drop index и т.д.,

а также SQL операторы:

  • select;

  • insert;

  • delete;

  • update, если они открывают таблицы.

Формат вызова:

setrdpswd([sPassword]);

Аргументы:

Аргумент

Тип

Значение

sPassword

character

Пароль для чтения. Если указать пустую строку или опустить аргумент, то это означает открытие таблиц без пароля на чтение.

Аналогично, для установки пароля на запись данных из таблицы используется функция setrdpswd.

Формат вызова:

setwrpswd([sPassword]);

Аргументы:

Аргумент

Тип

Значение

sPassword

character

Пароль для записи. Если указать пустую строку или опустить аргумент, то это означает открытие таблиц без пароля на запись.

Шифрование данных в таблицах

Для включения механизма шифрования данных в таблице используется специальная функция setcrypto. Данная функция устанавливает криптоключ для записи в таблицы по умолчанию. Пока не вызвана эта функция, все таблицы создаются без криптоключа. После вызова функции setcrypto все операции создания таблиц (постоянных и временных) будут производиться с указанным криптоключом. Установленный пароль будет использовать SQL оператор create table. Для последующего чтения, вставки и изменения данных из таблицы с активированной функцией шифрования повторный вызов функции setcrypto не требуется.

Формат вызова:

setcrypto([sCrypto]);

Аргументы:

Аргумент

Тип

Значение

sCrypto

character

Криптоключ. Если указать пустую строку или опустить аргумент, то это означает создание таблиц без криптоключа.

Пример:

if(table_exists('T1') > 0)     drop table T1;

create table T1 (   ID   dword surrogate,   DATA char(50) );

insert into T1(DATA) values('string11'); insert into T1(DATA) values('string12');

setcrypto('passkey');

if(table_exists('T2') > 0)   drop table T2;

create table T2 (   ID   dword surrogate,   DATA char(50) );

insert into T2(DATA) values('string21'); insert into T2(DATA) values('string22');

В данном примере таблица Т1 создается без криптоключа, поэтому данные записываются в файлы таблицы Т1 в открытом виде. Таблица Т2 создается после вызова функции setcrypto, поэтому данные таблицы Т2 хранятся в файлах таблицы в зашифрованном виде. В дальненйшем, для работы с данными таблицы Т2 повторный вызов функции setcrypto не требуется, т.е. криптоключ устанавливается один раз при создании таблицы.