Какой оператор предоставляет право выполнить определенное действие над определенным объектом базы

Обновлено: 30.06.2024

Думаю, настало время разобраться с тем как же создаются "схемы" в БД Oracle. Под понятием схема имеется ввиду сам созданный аккаунт или говоря прямо – пользователь БД! Целью создания пользователя как раз и является получение схемы БД, с определенными правами и привилегиями. Создание пользователя в БД Oracle достаточно не сложный, но в тоже время довольно концептуальный момент. Для создания пользователя (схемы), применяется команда DDL – CREATE USER. Она имеет следующий синтаксис:

Этот синтаксис не совсем полный, но для начала нам достаточно, далее мы рассмотрим то, что было не указано. Как правило, создание пользователей (схем) БД производится при подключении к БД, пользователем SYS или SYSTEM. Так как эти две схемы имеют права администраторов БД. Рассмотрим основные параметры команды – CREATE USER:

  • [пользователь] [Username] – Имя пользователя (название схемы).
  • [пароль] [Password] – Пароль для учетной записи.
  • DEFAULT TABLESPACE – Табличное пространство в котором будут находиться создаваемые в данной схеме объекты. Эта настройка не дает пользователю права создавать объекты – здесь устанавливается только значение по умолчанию.
  • TEMPORARY TABLESPACE – Табличное пространство, в котором находятся временные сегменты, используемые в процессе сортировки транзакций.
  • QUOTA – Позволяет пользователю сохранять объекты в указанном табличном пространстве, занимая там место вплоть до определенного в квоте общего размера.

К слову сказать, в чем мы далее и убедимся. Для того, чтобы запросы пользователей могли создавать временные сегменты в табличном пространстве TEMP, им не нужны квоты на дисковое пространство. Попробуем создать пользователя! Запускайте SQL*Plus с пользователем SYS или SYSTEM пароли администраторов смотрите в шаге 5! Из всего выше сказанного, запишем вот такую конструкцию:

Здесь мы создаем пользователя (схему) DUMMY с паролем DUMB и позволяем ему резвится на 100 Мб пространства USERS и еще немного выделяем из пространства TEMP. Получаем в результате:

Ок! Пользователь (схема) создан. Наверное, можно уже подключится и начать создавать объекты! Пробуем!

Именное такой синтаксис подключения можно использовать, он еще называется строка коннекта и расписывается вот так:

Опа! Не повезло! Создание пользователя – это еще не все! Теперь ему нужно разрешить самое основное – создавать сессию с сервером. Сделать это можно командой GRANT. Она достаточно объемная и мы ей займемся чуть позже, а пока восстановим подключение:

Даем пользователю право создавать сессию с сервером:

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

Дадим такой запрос к представлению DBA_USERS:

Кто знаком с криптографией, может на досуге раскусить – E888ADB4D5FFE1B2 или хотя бы провести аналогию с DUMB! Итак, все с нашей схемой в порядке! Осталось только разрешить пользователю создавать объекты БД.

Да, так как оператор GRANT это DDL, то COMMIT вызывается не явно! В данном случае мы разрешили пользователю, создавать такие основные объекты БД как – TABLE, PROCEDURE, TRIGGER, VIEW, SEQUENCE. Для начала этого достаточно. А что делать, если пользователю будет необходимо изменять эти объекты? Тогда нужно добавить еще немного прав, на изменение (ALTER) вот так:

Вот теперь он может не только создавать эти объекты, но и изменять их! А, что если пользователю необходимо будет удалить какой-либо объект или удалить записи из таблиц? Тогда нужно добавить права на удаление объектов БД вот так:

Уфф! Ну вот теперь кажется все! Пользователь действительно полноценный и может работать! Помните в шаге 6 мы с вами это уже проделывали, но тогда я не вдавался в подробности, так как было не до того! А, вот теперь давайте разберемся более детально и продолжим далее.

По умолчанию аккаунт не имеет никаких прав в БД Oracle. Невозможно даже создать подключения без назначенных прав. И даже после получения прав на подключения, аккаунт не может сделать ничего полезного (или опасного) без получения соответсвующих прав. Права назначаются с помощью команды GRANT и убираются с помощью команды REVOKE. Дополнительные директивы команды используются для разрешения аккаунта делится правами которые у него есть с другими пользователями. По умолчанию только аккаунта администратора (SYS и SYSTEM) владеют правами назначения прав. Пользователь который назначает права другому пользователю называется grantor когда получатель прав – grantee. Права разбиты на две группы: системные права, которые грубо говоря позволяют пользователю совершать действия влияющие на словарь данных, и права над объектами, которые позволяют пользователю совершать действия влияющие на данные.

Системные права

Всего доступно около двух сотен системных прав. Большинство из них влияет на действия затрагивающие словать данных (такие как создание таблиц или пользователей). Остальные влияют на экземпляр или БД (создание табличны пространств, изменение параметров БД и создание сессий). Наиболее часто используемые права это

  • CREATESESSION – права на подключения. Без этих прав вы даже не сможете подключиться к БД
  • RESTRICTEDSESSION – Если БД запущена с директивой STARTUPRESTRICT или применялась команда ALTERSYSTEMENABLERESTRICTEDSESSION, то только пользователи с этими правами смогут подключаться к БД
  • ALTERDATABASE – разрешает выполнять команды влияющие на физические структуры
  • ALTERSYSTEM – разрешает изменять параметры экземпляра и структуры памяти
  • CREATETABLESPACE – вместе с ALTERTABLESPACE и DROPTABLESPACE позволяют пользователю управлять табличными пространтсвами
  • CREATETABLE – позволяет gratee создавать таблицы в своей схеме; включает возможность создавать, изменять и удалять таблицы, выполнять команды DML и select и управлять индексами
  • GRANTANYOBJECTPRIVILEGE – позволяет grantee управлять правами объектов которые ему не принаджлежат, но не даёт прав ему самому
  • CREATEANYTABLE – grantee может создавать таблицы которые принадлежат другим аккаунтам
  • DROPANYTABLE – grantee позволяется удалять таблицы которые принадлежат другим аккаунтам
  • INSERTANYTABLE, UPDATEANYTABLE, DELETEANYTABLE – даёт grantee право выполнять DML команды над объектами которые ему не принадлежат
  • SELECTANYTABLE – Даёт право grantee выполнять SELECT к любмы таблицам.

Синтаксис для назначения прав

GRANT privilege [,privilege…] TO username;

После создания аккаунта, обычно назначаются права часто используемые пользователями кто вовлечён в разработку приложения

grant create session, alter session,

create table, create view, create synonym, create cluster,

create database link, create sequence,

create trigger, create type, create procedure, create operator

Эти права позволяют подключаться и настраивать сессию, создавать объекты и хранить PL/SQL объекты. Объекты могут быть созданы только в схеме аккаунта; нет прав к схемам других аккаунтов. Также создание объектов ограничивается лмимитами табличных пространств.

Другим вариантом назначения прав будет назначение grantee доступа для переназначения прав другим аккаунтам. Например

grant create table to scott with admin option;

grant create table to jon;

Выполнение этих команд позволит SCOTT создавать таблицы в совей схеме, и выполнять команду GRANT. SCOTT даёт права пользователю JON создавать таблицы – но JON сможет создавать таблицы только в схеме JON. На рисунке 6-5 показаны права пользователя в Database Control; ту же информацию можно получить выполнив запрос к представлению DBA_SYS_PRIVS.

Если системные разрешения были отозваны, все действия которые вы выполнили пока у вас были права остаются в силе. Если у вас были права с ADMIN OPTION то у всех пользователей которым вы назначили права – права остаются, несмотря на то что у вас права отозвали. Не остаётся записей кто именно назначил системные привилегии, таким образом невозможно забрать права CASCADE как показано на рисунке 6-6

Revocation of a system privilege will not cascade (unlike

revocation of an object privilege).

Права ANY дают доступ ко всем объектам в БД. Таким образом

grant select any table to scott

позволить аккаунту SCOTT выполнять запрос SELECT ко всем таблицам во всех схемах БД. Такое назначение прав считается дурным тоном и ANY права назначаются только DBA.


In fact, ANY is not as dangerous now as with earlier releases. It no longer

includes tables in the SYS schema, so the data dictionary is still protected. But

ANY should still be used with extreme caution, as it removes all protection

from user tables.


Объектные права

Объектные права дают доступ к выполнению команд DML и SELECT к соответствующим объектам и выполнению PL/SQL объектов. Эти права не существуют для объектов в схеме аккаунта; если у пользователя есть системные права CREATE TABLE – это значит что он может выполнять SELECT и DML запросы к таблицам которые он создал без дополнительных прав.

The ANY privileges, that grant permissions against objects in

every user account in the database, are not object privileges—they are

Объектные права применяются к разным группам объектов


GRANT privilege ON [schema.]object TO username [WITH GRANT OPTION];

grant select on store.customers to scott;

Можно использовать ALL чтобы применить права для всех операций, или использовать конкретное указание столбца таблицы или представления.

grant select on store.orders to scott;

grant update (order_status) on store.orders to scott;

grant all on store.regions to scott;

Эти команды позволят аккаунту SCOTT выполнять запрос SELECT ко всем столбцам таблицы ORDERS в схеме STORE но обновлять данные только в одном столбце. Также у аккаунта SCOTT есть доступ ко всем операциям к таблице REGIONS. На рисунке 6-7 отображается результат назначения прав при просмотре в Database Control

Granting privileges at the column level is often said to be bad practice

because of the massive workload involved. If it is necessary to restrict peoples’

access to certain columns, creating a view that shows only those columns will


often be a better alternative.

Использование директивы WITH GRANT OPTION позволит пользователю передавать свои права другим аккаунта. Оракл хранит информацию о том кто и кому дал доступ на объектном уровне; это позволяет отзывать права учитывая эту информацию. Рассмотрим пример

grant select on customers to sales with grant option;

grant select on store.customers to webapp with grant option;

grant select on store.customers to scott;

revoke select on customers from sales;

После выполнения этих команд, ни у пользователя SALES ни у пользователя WEBAPP ни у пользователя SCOTT нет прав на выполнение команд SELECT к таблице STORE.CUSTOMERS.

Revocation of an object privilege will cascade (unlike revocation of

Полномочия – это право на выполнение конкретного типа SQL-оператора или на доступ к объекту базы данных, принадлежащему другому пользователю. В базе данных Oracle необходимо явно предоставить пользователю полномочия для выполнения любых действий, включая подключение к базе данных или выборку, изменение и обновление данных в любой таблице, кроме собственной.

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

Системные полномочия:

Системные полномочия позволяют пользователю выполнить конкретное действие в базе данных либо действие с любым объектом схемы, конкретного типа. Хороший пример первого типа системных полномочий – полномочия, которые позволяют подключаться к базе данных, носящие название полномочий CONNECT. Другими полномочиями этого типа являются полномоичия CREATE TABLESPACE, CREATE USER, DROP USER и ALTER USER.

Второй класс системных полномоичий предоставляет пользователям право на выполнение операций, которыевлияют на объекты в любой схеме. Примерами этого типа системных полномочий служат ANALYZE ANY TABLE, GRANT ANY PRIVILEGE, INSERT ANY TABLE, DELETE ANY TABLE и т.п. Системные полномочия являются очень мощным средством и выдача их не тому пользователю может оказать разруши тельное влияние на базу данных.

Ниже перечислены некоторые наиболее часто используемые полномочия базы данных Oracle:

  • ADVISOR
  • ALTER DATABASE
  • ALTER SYSTEM
  • AUDIT SYSTEM
  • CREATE DATABASE LINK
  • CREATE TABLE
  • CREATE ANY INDEX
  • CREATE SESSION
  • CREATE TABLESPACE
  • CREATE USER
  • DROP USER
  • INSERT ANY TABLE

Пример:

Объектыные полномочия:

Объектыне полномочия – это полномочия по отношению к различным типам объектов базы данных. Объектыные полномочия дают пользователю возможность выполнять действия с конкретной таблицей, представлением, материализованным представлением, последовательностью, процедурой, функцией или пакетом. Следовательно, всем пользователям базы данных нужны объектные полномочия.

Для выдачи объектных полномочий можно использовать следующие SQL-операторы.

В коммерческих СУБД набор основных операторов расширен. В большинстве СУБД включены операторы определения и запуска хранимых процедур и операторы определения триггеров.

В языке SQL/92 поддерживаются следующие типы данных:

CHARACTER(n) или CHAR(n) ─ символьные строки постоянной длины в n символов. При задании данного тина под каждое значение всегда отводится n символов, и если реальное значение занимает менее, чем n символов, то СУБД автоматически дополняет недостающие символы пробелами.

NUMERIC[(n,m)] ─ точные числа, здесь n ─ общее количество цифр в числе, m ─ количество цифр слева от десятичной точки.

DECIMAL[(n,m)] ─ точные числа, здесь n ─ общее количество цифр и числе, m ─ количество цифр слева от десятичной точки.

DEC[(n,m)1 - то же, что и DECIMAL[(n,m)].

INTEGER или INT ─ целые числа.

SMALLINT ─ целые числа меньшего диапазона.

FLOAT[(n)] ─ Числа большой точности, хранимые в форме с плавающей точкой. Здесь n ─ число байтов, резервируемое под хранение одного числа. Диапазон чисел определяется конкретной реализацией.

REAL ─ вещественный тип чисел, который соответствует числам с плавающей точкой, меньшей точности, чем FLOAT.

DOUBLE PRECISION специфицирует тип данных с определенной в реализации точностью большей, чем определенная в реализации точность для REAL.

VARCHAR(n) это строка символов переменной длины.

NCHAR VARYING(n) ─ строки локализованных символов переменной длины.

BIT(n) ─ строка битов постоянной длины.

BIT VARYING(n) ─ строка битов переменной длины.

DATE ─ календарная дата.

TIMESTAMP(TОЧНОСТЬ) ─ дата и время.

INTERVAL ─ временной интервал.

Достоинства языка SQL

Язык запросов дает несомненные преимущества. Во первых он продолжает идеологию архитектуры Клиент-Сервер. Клиентская часть приложения подготавливает запрос на обработку информации и отсылает запрос на сервер базы данных. Сервер , выполнив (обработав) полученный запрос возвращает клиентской программе готовый результат.

Основные преимущества напрямую вытекают из преимуществ клиент-серверного подхода. Например, простое суммирование значений всех полей без использования SQL приведет к пересылки всей таблицы по сети на машину клиента. После суммирования таблица фактически уже не нужна и такое использование сети как минимум не рационально. В случае же с SQL по сети уйдет запрос на сервер, сервер проведет суммирование и вернет обратно по сети только полученную сумму!

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

Стандарт SQL определяется ANSI (Американским Национальным Институтом Стандартов) и в данное время также принимается ISO (МЕЖДУНАРОДНОЙ ОРГАНИЗАЦИЕЙ ПО СТАНДАРТИЗАЦИИ). Однако, большинство коммерческих СУБД расширяют SQL без уведомления ANSI, добавляя разные другие особенности в этот язык, которые, как они считают, будут весьма полезны. Иногда они несколько нарушают стандарт языка, хотя хорошие идеи имеют тенденцию развиваться и вскоре становиться стандартами "рынка" сами по себе в силу полезности своих качеств.

Здесь следует отметить, что несмотря на достаточно большой набор нестандартных дополнительных фукций SQL InterBase, программа Отдел Кадров использует только стандартные операторы и конструкции. Такое решение принято для возможности легкого переноса программы на другой SQL сервер. Например, при дальнейшем развитии можно перенести программу на Microsoft SQL Server, если InterBase по каким либо причинам перестанет удовлетворять запросы разработчиков. Также следует отметить, что многие нестандартные , дополнительные возможности разных SQL серверов зачастую похожи между собой и при выходе нового стандарта, как правило переносятся в группу стандартизованных. Таким образом происходит дальнейшее развитие языка SQL.

В целом, список преимуществ, на которые стоит обратить внимание в первую очередь, можно представить в следующем виде:

· независимость от конкретных СУБД;

· переносимость с одной вычислительной системы на другую;

· поддержка со стороны компании Microsoft (протокол ODBC);

· высокоуровневая структура, напоминающая английский язык;

· возможность выполнения специальных интерактивных запросов:

· обеспечение программного доступа к базам данных;

· возможность различного представления данных;

· полноценность как языка, предназначенного для работы с базами данных;

· возможность динамического определения данных;

· поддержка архитектуры клиент/сервер.

Все перечисленные выше факторы явились причиной того, что SQL стал стандартным инструментом для управления данными на персональных компьютерах, мини-компьютерах и больших ЭВМ. Ниже эти факторы рассмотрены более подробно.

Способы создания БД.Для изменения структуры БД в SQL предусмотрен язык определения данных, или DDL. С помощью этих операторов можно: создать новую БД; определить структуру новой таблицы и создать эту таблицу; удалить существующую таблицу; изменить определение существующей таблицы; определить представление данных; обеспечить условия безопасности БД; создать индексы для доступа к таблицам;

Собственно DDL базируется на трех командах SQL:

∙CREATE - создать, позволяющий определить и создать объект БД;

∙DROP - удалить, применяемый для удаления существующего объекта данных;

∙ALTER - изменить, с помощью которого можно изменить определение объекта БД.

Использование команд DDL во время работы позволяет сделать структуру реляционной БД динамической. Операторы DDL в СУБД можно использовать как в интерактивном, так и в программном SQL.

Большинство многопользовательских БД имеют достаточно несложную организацию физической памяти, что обеспечивает повышение ее производительности. Например, в Microsoft SQL Server администратор БД может с помощью оператора CREATE DATABASE задать один или несколько именованных файлов: CREATE DATABASE ON , , Подход, используемый в SQL Server, позволяет распределять содержимое БД по нескольким дисковым томам.

Создание таблицИтак, после создания БД необходимо осуществить создание, изменение, а если нужно - то и удаление таблиц. Эти действия относятся к самим таблицам, а не к данным, которые в них содержатся. Таблицы создаются командой CREATE TABLE. Эта команда создает пустую таблицу, т.е. не содержащую записей. Очевидно, что значения в нее можно ввести с помощью команды INSERT. Главное в команде CREATE TABLE - это определение имени таблицы и описания набора имен полей, которые указываются в соответствующем порядке. Кроме того, этой командой также оговариваются типы данных и размеры полей таблицы.

Синтаксис команды CREATE TABLE следующий:

Значение аргумента размера зависит от типа данных. Если его не указывать, то СУБД сама будет назначать значение автоматически. Тип данных CHAR требует обязательного указания размера. Аргумент размера - это целое число, определяющее максимальное количество символов, которое может вместить поле. Таблицы принадлежат пользователю, который их создал, а имена всех таблиц, принадлежащих данному пользователю, должны отличаться друга от друга точно так же, как и имена всех полей внутри данной таблицы. Однако разные таблицы могут использовать одинаковые имена полей, даже если они принадлежат одному и тому же пользователю. Например, поле с именем SNUM присутствует в таблицах STUDENTS и USP, ничуть не мешая друг другу.

Как уже было сказано, пользователи, не являющиеся владельцами таблиц, могут ссылаться к этим таблицам с помощью имени владельца, сопровождаемого точкой. Например, имя таблицы: SA.STUDENTS подразумевает, что обращение идет к таблице STUDENTS, созданной пользователем с идентификатором разрешения (ID) SA.

Приведем пример команды, которая создаст структуру таблицы STUDENTS:

CREATE TABLE STUDENTS (SNUM INTEGER, SFAM CHAR (20), SIMA CHAR (10), SOTCH CHAR (15) STIP DECIMAL) ;

После того, как таблица была создана, ее можно изменять. Команда ALTER TABLE является широко доступным средством для того, чтобы изменить определение существующей таблицы. Чаще всего с ее помощью добавляют поля к таблице, хотя она может удалять или изменять их размеры. Типичный синтаксис этой команды для добавления столбца к таблице, такой: ALTER TABLE ADD ;

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

Для того, чтобы иметь возможность удалить таблицу, пользователь должен быть ее собственником. Кроме того, перед удалением, SQL потребует очистки таблицы от данных, что позволяет избежать случайной и невосполнимой потери информации. Таким образом, таблица, с находящимися в ней строками, не может быть удалена. Синтаксис команды для удаления таблиц следующий:

Права в MS SQL и создание пользователей. CREATE USER, GRANT, REVOKE

На первый взгляд, в MS SQL нестандартная система учетных записей. В ней существуют логины и пользователи.

Логины - это понятие всего сервера SQL. У них могут быть права на какие-то административные задачи (например бэкап). Им можно дать права на какие-то действия с базой или таблицой. Для того что бы у логина были права на базу на основе него создается пользователь. Они могут быть как SQL логином, так и созданные на основе существующих пользователя Windows или AD. Например тот пользователь, который устанавливал MS SQL так же добавился в список логинов. Рекомендуется использовать логины на основе Windows или AD, а не SQL логины.

Пользователи - это понятие в рамках одной базы. Им нельзя дать права по административной части, но можно дать права на работу с базой.

Оба типа учетных записи можно создать как в графике, так и с помощью запроса T-SQL

T-SQL CREATE USER, CREATE LOGIN

Перейдем в базу данных, в которой мы работаем:

Для создания логина SQL выполним:

Anton - имя логина. Password1910 - пароль. У этого логина уже будут права на вход.

Посмотреть что этот логин создался можно так:

Как открыть список логинов MS SQL

Под номером 3 - это кнопка обновления. Может понадобится т.к. в графике изменения происходят не моментально.

Для создания пользователя привязанного к логину нужно выполнить:

Отмечу, что пользователь создасться в той базе, откуда мы выполняем запрос.

Что бы просто создать пользователя нужно:

Где JustUser - просто пользователь

Созданных пользователей можно увидеть так:

Список пользователей MS SQL

Пользователи создаются без каких либо прав на базу.

T-SQL GRANT

GRANT в пер. "Разрешение" дает права на какое-то действие.

Что бы дать пользователю право получать данные из какой-то таблицы нужно выполнить:

Если мы хотим зайти под созданным пользователем нам нужно выполнить ряд действий. Дело в том, что по умолчанию аутентификация по логинам SQL отключена (разрешена только Windows). Для этого зайдем в свойства сервера:

Свойства сервера Microsoft SQL

Затем в "Безопасность" и включи аутентификация SQL

Включение аутентификации SQL

Теперь мы сможем зайти под логином SQL. Для этого сделаем следующее - откроем новое окно запросов Ctr + N или нажмем кнопку:

Кнопка нового запроса MS SQL

Важно сделать так, что бы у нас было 2 окошка для запросов до того как мы сменем пользователя. Благодаря этому у нас каждое окно будет работать под разными пользователями

Затем окно подключения пользователя:

Новое подключение MS SQL

Меняем тип подключени на SQL и вводим логин/пароль. Я создавал логин Anton, с паролем Password1910.

После подключения можем увидеть, что одно окно работает под логином Anton, а другое под учетной записью с помощью которой мы проводили операции выше. Так же обратите внимания, что новые пользователь подключен к другой базе (master).

Пользователь в окне запроса MS SQL

Перейдем к базе, на которую мы давали права. В моем случае это база pubs

Я давал права на SELECT для таблицы dbo.authors. Проверем работу:

Запрос дожен пройти успешно.

Для другой таблицы, на которую мы не давали прав:

The SELECT permission was denied on the object 'titles', database 'pubs', schema 'dbo'.

Что бы отозвать разрешение на SELECT нужно заменить GRANT на REVOKE (не забудьте переключится на окно у которого есть разрешение или переключится на предыдущего пользователя):

Разрешений, которые мы можем выдать пользователю достаточно много. Это основные:

MS SQL права для пользователей

Мы можем так же явно запретить пользователю выполнять определенные запросы. Для этого есть DENY:

Что ба дать разрешение на создание таблиц:

Теперь создадим логин через графический интерфейс. Нажмем следующие кнопки:

Создание логина MS SQL

В новом окне мы должны заполнить логин (1) и пароль (3). Под цифрой 2 мы можем увидеть выбор способа аутентификации. В случае Windows мы должны будем выбрать локального пользователя или пользователя AD. Перейдем на закладку Server Roles (4).

Настройки логина для MS SQL

Перед нами находятся роли уровня сервера. Все эти роли это просто набор прав. В Microsoft SQL мы так же можем создать и свои группы. Public - роль по умолчанию для всех, кому разрешено вход. Из всех созданных ролей только public можно изменять.

Роли уровня сервера MS SQL

Приведу описание самых популярных ролей:

MS SQL роли пользователей

Перейдем на следующую вкладку (2)

На этой закладке можно сразу создать пользователя и привязать его к базе данных. На этой закладке отображаются 4 базы, которые вы скорее всего раньше не видели. Это системные базы данных, которые хранят в себе транзакции, структуру подключенных баз, скрипты агента и т.д. В области 2 можно дать права на выделенную базу данных.

Права пользователя MS SQL

Коротко о нескольких ролях баз данных:

MS SQL права пользователей

Роль public, в отличии от всех остальных, можно изменять. Т.е. можно дать роли public разрешение на SELECT и тогда все пользователи с логином смогут это делать. По умолчанию эта ролько может делать запросы типа:

Создание нового пользователя и настройка прав доступа в MySQL

В современных реалиях сложно найти даже самое простое приложение, которое бы не требовало подключения базы данных – места для хранения электронной информации. Обычно для работы с такими хранилищами используется система управления базами данных. MySQL – самая распространенная и популярная СУБД в мире.

Давайте выясним, чем же она хороша и как с ней работать.

База данных MySQL: что это такое и в чем ее преимущества

MySQL – это реляционная система управления базами данных с открытым исходным кодом, написанная на языках программирования C и C++. Благодаря ей можно оптимизировать работу сайта или мобильного/десктопного приложения.

База данных – это место для структурированного хранения данных. Например, чтобы найти в смартфоне сохраненную картинку, мы используем для этого галерею. В данном случае картинки – это данные, а галерея – база данных.

Такой же подход используется и на многих сайтах, где подключены формы регистрации, системы оформления заказа и прочее. Когда вы регистрируетесь на сервисе, вся полученная от вас информация сохраняется в базе данных – благодаря этому вы можете повторно войти в свой аккаунт и получить доступ к внесенным ранее изменениям.

Если вести крупный ресурс без БД, то на это будет уходить очень много времени и средств. Базы данных группируют и упорядочивают информацию, упрощают получение доступа к ней. Чтобы администрировать такой большой поток данных, используются СУБД: MySQL, Microsoft SQL Server, PostgreSQL и другие.

MySQL хранит всю информацию в табличном виде. Извлечь данные из одной или нескольких таблиц можно с помощью запроса. Запросы в MySQL – это то, на чем все строится, с их помощью можно выполнять всевозможные операции с данным.

Столбцы таблицы всегда строго упорядочены, а расположение строк при необходимости может меняться в зависимости от информации в ячейках. Посмотрите на простую адресную книжку в виде таблицы:

Как работает база данных MySQL

Принцип работы с таблицами следующий: к серверу, на котором хранятся и обрабатываются структурированные данные, подключаются клиенты для получения необходимой информации, а для взаимодействия между пользователем и сервером используется специальное ПО. Заполнение подобных и более крупных таблиц происходит с помощью языка программирования SQL.

Исходя из пользовательского опыта, можно выделить следующие особенности MySQL:

  • быстрая скорость доступа и обработки данных;
  • надежная защита информации;
  • простота использования;
  • совместимость с Windows и Linux;
  • бесплатность;
  • возможность контролировать доступ к данным и учетным записям;
  • шифрование паролей.

На этом с теоретической частью закончим.

VDS Timeweb арендовать

Создание нового пользователя в MySQL

После установки MySQL в базе данных автоматически будет создан новый пользователь root. Работать под таким именем небезопасно, поэтому рекомендуется создавать нового пользователя и выполнять необходимые действия под ним. Давайте рассмотрим два способа создания нового пользователя в MySQL – через phpMyAdmin и через консоль.

Вариант 1: с помощью phpMyAdmin

Нам потребуется phpMyAdmin – приложение для работы с базой данных, которое обычно по умолчанию предустановлено на хостинге либо локальном сервере.

Чтобы добавить нового пользователя в phpMyAdmin, воспользуемся инструкцией:

Подробнее о правах доступа мы поговорим чуть позже, а пока давайте рассмотрим альтернативный метод добавления пользователя в БД.

Вариант 2: через консоль

Если вы подключаетесь к серверу по SSH, то этот способ для вас. Нам потребуется выполнить несколько команд:

Первым дело активируем сервер базы данных:

Создадим нового пользователя:

В кавычках потребуется изменить следующие данные: user – имя пользователя, pswrd – пароль.

Пока что пользователь не имеет разрешений, а значит, не может получить доступ к MySQL. Для решения такой проблемы пропишем еще одну строчку кода:

Мы выдали указанному пользователю все доступные права. Осталось сохранить внесенные изменения с помощью команды:

Готово! Теперь вы знаете, как создать нового пользователя в MySQL с правами доступа root.

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

В MySQL выделяют следующие права доступа:

  • ALL PRIVILEGES – предоставляет полный доступ к выбранной БД;
  • CREATE – разрешает пользователям создавать новые БД;
  • SELECT – разрешает делать выборку данных;
  • INSERT – позволяет вносить новые записи в таблицы;
  • UPDATE – разрешает менять ранее созданные записи в таблицах;
  • DELETE – разрешает удалять записи из таблиц;
  • DROP – дает возможность удалять записи в БД;
  • GRANT OPTION – позволяет пользователю предоставлять или отзывать права других пользователей.

Как изменить права доступа в MySQL

Чтобы предоставить те или иные права доступа, мы можем воспользоваться административной панелью или консолью.

Способ 1: через phpMyAdmin

Изменяем права доступа:

Таким образом, мы настроили права доступа для одного пользователя. Впоследствии вы сможете их изменить аналогичным способом.

Вариант 2: в терминале

В данном случае нам потребуется всего несколько команд. Если требуется изменить права доступа для выбранного пользователя MySQL, то необходимо выполнить следующее:

Значения внутри скобок необходимо заменить:

  • наименование БД – указываем базу данных;
  • наименование таблицы – указываем имена таблиц, к которым необходимо выдать доступ, прописываем .*, чтобы разрешить доступ ко всем таблицам;
  • права — указываем тип прав, рассмотренный ранее;
  • user – имя пользователя.

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

Если нужно удалить права у выбранного пользователя:

Забрать все права:

Полностью удалить пользователя можно командой:

Как посмотреть права доступа в MySQL

Для того чтобы посмотреть, какие права доступа выданы пользователю MySQL, достаточно в консоли прописать команду:

На этом моя статья подходит к концу. Надеюсь, что создать нового пользователя в MySQL для вас больше не проблема. Спасибо за внимание!

проверить привилегии (Privileges) Postgres для пользователя

Без рубрики

В SQL привилегия относится к определенному разрешению или праву на выполнение действия в базах данных на сервере. Например, в PostgreSQL привилегии могут включать привилегию входа на сервер для выполнения различных действий.

Это краткое руководство покажет вам, как получить привилегированную информацию о пользователе, доступном на сервере.

Типы привилегий

Прежде чем мы продолжим запрашивать у PostgreSQL информацию о пользователях, давайте выделим различные разрешения и то, что они позволяют делать назначенному им пользователю.

Типы привилегий в СУБД PostgreSQL:

  • SELECT -привилегия select позволяет пользователю выбирать значения из любых столбцов любого табличного объекта. Табличные объекты в PostgreSQL включают таблицу, представление, материализованное представление и т.д.
  • INSERT -разрешение на вставку позволяет пользователю вставлять новые строки в таблицу. Вы также можете предоставить право вставки в определенный столбец, позволяющее вставлять строки только в заданные столбцы.
  • UPDATE -этот тип привилегии позволяет пользователю установки обновлять строки в любых столбцах таблицы или представления. Подобно разрешению на вставку, вы можете установить его для определенного столбца, чтобы пользователь мог обновлять строки только определенного столбца (столбцов).
  • DELETE-это позволит пользователю удалить / удалить строку из любого изменяемого табличного объекта. Для этого требуется, чтобы у пользователя было разрешение SELECT, поскольку ему необходимо ссылаться на столбцы таблицы, чтобы проверить строки, которые необходимо удалить.
  • CONNECT -разрешение на подключение позволяет пользователю подключаться к серверу. Этот тип разрешения проверяется при запуске соединения файлом pg_hba.conf.
  • CREATE -привилегия create позволяет пользователю создавать либо новую схему, либо таблицу в установленной базе данных. Это также может позволить пользователю устанавливать расширения в базе данных. Если это разрешение отозвано для пользователя, оно не удаляет все существующие объекты до точки завершения.
  • TRUNCATE -как следует из названия, он предоставляет пользователю разрешение на усечение таблицы.
  • TRIGGER -позволяет пользователю создавать триггер для табличных объектов.
  • ВРЕМЕННАЯ -позволяет пользователям создавать временную таблицу при подключении к установленной базе данных.
  • EXECUTE -разрешение на выполнение позволяет пользователю вызывать функции или процедуры. Это единственный тип разрешения, который может применяться к функциям / процедурам.
  • ССЫЛКИ -позволяет пользователю создавать ограничения внешнего ключа, которые ссылаются на таблицу или столбцы.

Как показать права пользователя

Перечислить привилегии пользователей просто. В psql используйте запрос \ du +, как показано в выводе ниже:

Приведенный выше вывод показывает пользователей Postgres

Приведенный выше вывод показывает пользователей Postgres и temp с соответствующими разрешениями.

Другой способ сделать это — использовать схему information_schema и запросить таблицу table_privileges следующим образом:

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

Вышеупомянутый запрос покажет подробную информацию о правах пользователя в базах данных

Заключение

В этом коротком руководстве обсуждались способы получения привилегированной информации о пользователях на сервере PostgreSQL.

Читайте также: