Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Справочник по SQL http.doc
Скачиваний:
0
Добавлен:
04.12.2019
Размер:
671.74 Кб
Скачать

Управление аккаунтами пользователи

Аккаунт или учетная запись характеризуется пользователем и правами доступа (привилегиями) назначенных пользователю. Обычно аккаунты защищены паролем.

-- создание пользователя

-- Oracle

CREATE USER username

IDENTIFIED BY psw

-- MySQL

CREATE USER username

IDENTIFIED BY 'pswd';

-- PostgreSQL

CREATE USER username

PASSWORD 'pswd';

-- уничтожения пользователя

DROP USER username;

Права доступа

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

Чтобы задать все доступные права на указанный объект, в стандарте предусмотрена конструкция ALL PRIVILEGES. Конструкция WITH GRANT OPTION дает разрешение пользователю самому назначать права. Чтобы сделать некоторые права на указанные объекты общедоступными в Oracle и PostgreSQL в качестве имени пользователя нужно указать public.

-- разрешаем пользователю username

-- вставлять, обновлять, вставлять и удалять записи

-- из таблицы tblname в текущей схеме

GRANT select, update, insert, delete

ON tblname

TO username;

-- разрешаем пользователю username

-- выполнять процедуру proc и функцию func

-- Oracle

GRANT execute ON proc TO username;

GRANT execute ON func TO username;

-- MySQL

GRANT execute ON PROCEDURE proc TO username;

GRANT execute ON FUNCTION func TO username;

-- PostgreSQL, если у процедуры или у функции

-- есть аргументы, то их надо указать

GRANT EXECUTE

ON FUNCTION proc()

TO username;

-- ---------------------

GRANT ALL PRIVILEGES

ON tblname

TO username

WITH GRANT OPTION;

-- Oracle, PostgreSQL

GRANT select

ON tblname

TO public;

Права доступа MySql

В MySQL схемы и пользователи независимы, поэтому при назначении прав необходимо указывать конкретную схему (имя_схемы.*) или распространять право на все схемы сразу (*.*). Последний вариант в MySQL называется глобальным уровнем назначением прав.

По сравнению с Oracle список прав не так велик из-за отсутствия некоторых типов объектов и объединения использования нескольких команд в одну привилегию. Ниже приведен список основных прав:

  • ALL PRIVILEGES - все права на указанный объект за исключением назначения прав на этот объект;

  • CREATE - право на создание таблицы;

  • ALTER - право на изменение таблицы;

  • DROP - право на уничтожение таблицы;

  • LOCK TABLES - право на блокировку таблицы;

  • CREATE TEMPORARY TABLES - право на создание временных таблиц;

  • CREATE ROUTINE - право на создание хранимых процедур и функций;

  • ALTER ROUTINE - право на изменение или уничтожение хранимых процедур и функций;

  • CREATE VIEW - право на создание представления;

  • TRIGGER - право на создание и уничтожение триггеров;

  • INDEX - права на создание и уничтожение индексов;

  • EXECUTE - право на выполнения хранимых процедур и функций;

  • EVENT - право на создание событий;

  • CREATE USER - права на создание, уничтожение, переименование пользователя и снятия все прав. Назначается только на глобальном уровне;

  • SELECT - право на выборку;

  • DELETE - право на удаление;

  • INSERT - право на вставку;

  • UPDATE - право на обновление;

  • FILE - право на использование команд SELECT ... INTO OUTFILE и LOAD DATA INFILE;

  • PROCESS - право на просмотр всех процессов командой SHOW PROCESSLIST;

  • SHOW DATABASES - право на просмотр списка схем;

  • SHOW VIEW - право на просмотр списка представлений;

  • SHUTDOWN - право на закрытие.

-- право на создание таблицы в схеме test

grant create on test.* to username;

-- право на уничтожение таблицы в схеме test

grant create on test.* to username;

-- право на создание, уничтожение, переименование

-- пользователя и снятие привилегий

GRANT create user ON *.* TO username

-- с правом назначать привилегии

WITH GRANT OPTION;