
- •Введение
- •Прочие команды
- •Структура базы данных
- •Ключи, ограничения
- •Индексы
- •Представления
- •Процедуры и функции
- •Триггеры
- •Пользователи и сессии
- •Инструментарий скачать субд
- •Инсталляция
- •Выполнение запросов
- •Использование примеров
- •Комментарий
- •Идентификаторы
- •Обзор типов данных
- •Интервал времени
- •Литералы
- •Выражения и операции
- •Cтроковые операции
- •Алгебраические операции
- •Операции отношения
- •Логические операции и предикаты
- •Условные выражения
- •Прочие операции
- •Обзор функций
- •Математические функции
- •Строковые функции
- •Работа с датами
- •Преобразование типов
- •Функции Oracle
- •Функции PostgreSql
- •Функции MySql
- •Создание таблицы
- •Значения полей по умолчанию
- •Ключи и ограничения
- •Настройка внешнего ключа
- •Создание по выборке
- •Дополнительные параметры таблицы
- •Изменение, удаление таблицы
- •Переименование таблицы или ее столбца
- •Добавление/удаление столбца
- •Первичный ключ
- •Уникальный ключ
- •Внешний ключ
- •Безошибочное удаление таблиц
- •Добавление записей
- •Значения по умолчанию
- •Подзапросы
- •Вставка по условию
- •Обновление записей
- •Обновление подзапросом
- •Обновление по данным другой таблицы
- •Удаление записей
- •Выборка записей
- •Выборка констант
- •Выборка по столбцам таблиц
- •Синонимы (алиасы)
- •Уникальные записи
- •Выборка по условию
- •Выборка по группам
- •Соединения
- •Агрегатные функции, группировка данных
- •Операции над выборками
- •Добавление итогов
- •Нумерация записей
- •Обеспечение уникальности первичного ключа
- •Столбцы с автоинкрементом
- •Индексы
- •Представления
- •Динамический sql (dsql)
- •Процедурные операторы блоковая структура кода
- •Присвоение
- •Условный оператор
- •Оператор выбора
- •Безусловный цикл
- •Цикл с предусловием
- •Цикл по счетчику
- •Цикл по элементам
- •Операторы выхода/продолжения итерации
- •Выборка в переменные
- •Хранимые процедуры
- •Вызов процедур
- •Исключения
- •Курсоры
- •Триггеры
- •Числа прописью
- •Транзакции, конкурирующие запросы
- •Управление аккаунтами пользователи
- •Права доступа
- •Права доступа MySql
- •Права доступа PostgreSql
- •Права доступа Oracle
- •Удаление прав доступа
- •Роли PostgreSql
- •Роли Oracle
- •Роли MySql
- •Файловый вывод/ввод
- •Информация о базе данных
Управление аккаунтами пользователи
Аккаунт или учетная запись характеризуется пользователем и правами доступа (привилегиями) назначенных пользователю. Обычно аккаунты защищены паролем.
-- создание пользователя
-- 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;