1 каким объектам могут быть предоставлены системные привилегии

Обновлено: 04.07.2024

Используется, чтобы создать идентификатор SQL Server и предоставить ему доступ с заданным паролем (NULL, если опущен). Можно указать базу данных по умолчанию (Master, если опущено), язык, идентификатор безопасности, опции шифрования пароля

[@loginame =] 'имя_учетной_записи'

Используется, чтобы удалить идентификатор SQL Server. Нельзя удалить идентификатор, который соответствует пользователю БД, имеющему привилегии для этой БД. Сначала необходимо удалить привилегии.

Авторизация пользователей

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

Авторизация в СУБД Oracle

Только что созданный пользователь базы данных Oracle не имеет никаких привилегий, в том числе на создание сеанса связи с базой данных. При попытке пользователя соединиться с базой данных возвращается ошибка, сообщающая, что пользователь не имеет необходимых привилегий. Администратор базы данных должен разрешить пользователю создавать сеанс, чтобы он мог, по крайней мере, соединиться с базой данных. Для этого в СУБД Oracle используется команда GRANT CREATE SESSION TO пользователь.

SQL> CONNECT student/tbd

ORA-01045: user STUDENT lacks CREATE SESSION privilege; logon denied

Warning: You are no longer connected to ORACLE.

SQL> CONNECT system

SQL> GRANT CREATE SESSION TO student;

SQL> CONNECT student/tbd

Администратор может запретить пользователю соединяться с базой данных Oracle. Для этого используется команда REVOKE CREATE SESSION FROM пользователь.

Авторизация в SQL Server

Для управления авторизацией в SQL Server используются системные хранимые процедуры:

Хранимая процедура

[@loginame =] 'имя_учетной_записи'

[, [@name_in_db =] 'псевдоним']

[@name_in_db =] 'псевдоним'

Используется для удаления учетной записи из базы данных SQL Server. Идентификатор SQL Server нельзя удалить до тех пор, пока данная процедура не будет выполнена для всех баз данных, доступ к которым разрешен для пользователя. Учетную запись Windows можно снять без предварительного снятия привилегий.

Привилегии и роли

Безопасность базы данных можно разделить на две части:

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

§ проверка правильности комбинации имени и пароля пользователя;

§ контроль системных операций, которые пользователю разрешено выполнять.

§ Безопасность данных включает механизмы, которые управляют доступом к объектам базы данных. Безопасность данных определяет:

§ к каким объектам базы данных имеет доступ пользователь;

§ какие действия пользователь может выполнять с объектами базы данных (извлечение, вставка, обновление, удаление).

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

Привилегии – права на выполнение определенных команд SQL. Привилегии делятся на системные (командные) и объектные привилегии.

Системные (командные) привилегии – разрешают пользователю выполнять конкретную операцию базы данных. Системные привилегии не назначаются для именованных объектов, они задаются для конкретных операций. Предоставлять системные привилегии имеют право пользователи с правами администратора базы данных. В SQL Server некоторые командные привилегии может, также, предоставить владелец базы данных.

§ CREATE TABLE – разрешает создание таблиц в собственной схеме

§ CREATE VIEW – создание представлений в собственной схеме

§ CREATE PROCEDURE – создание хранимых процедур, функций, пакетов в собственной схеме

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

§ ALTER – разрешает изменение определения заданных таблиц, представлений

§ DELETE – разрешает удаление строк из заданных таблиц, представлений

§ EXECUTE – разрешает выполнение заданных хранимых процедур, функций, пакетов

§ INSERT – разрешает вставка строк в заданные таблицы, представления

§ SELECT – разрешает чтение данных из заданных таблиц, представлений

§ UPDATE – разрешает изменение данных в заданных таблицах, представлениях

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

§ Привилегия пользователю может быть предоставлена явно. Например, привилегия вставлять строки в таблицу EMP может быть явно предоставлена пользователю scott

§ Привилегия может быть предоставлена роли, а роль, затем, может быть предоставлена одному или более пользователей. Например, привилегия вставлять строки в таблицу EMP может быть предоставлена роли clerk, которая, в свою очередь, может быть предоставлена пользователям scott и brian

Предоставление привилегий

Для предоставления привилегий используется SQL команда языка управления данными GRANT.

Не знаю, чем у вас закончилась история с нашим новым пользователем DUMMY, а у меня он все же остался. Если кто-то из вас создал своего пользователя, то можете воспользоваться своим. А, вот сейчас давайте поговорим о том, как могут взаимодействовать разные схемы БД. И как это все возможно осуществить. Запускайте SQL*Plus и подключайтесь пользователем DUMMY (если вы его все-таки пристрелили, реанимируйте его согласно шагу 101). А теперь, находясь в схеме DUMMY дайте такой запрос:

Неудача "ORA-00942: таблица или представление пользователя не существует"! Говорит само за себя. Теперь попробуем:

В чем же причина? Да просто у пользователя DUMMY нет прав производить чтение из таблицы схемы MILLER! Как его предоставить? Очень просто. Подключаемся к схеме MILLER:

А теперь записываем следующее:

Меняем подключение на DUMMY:

Снова повторяем запрос вот так, чтобы было меньше столбцов:

Получаем в результате:

  • system_privilege - предоставляемое системное полномочие.
  • role - предоставляемая роль.
  • TO - определяет пользователей или роли, которым предоставляются системные полномочия.
  • PUBLIC - указывает что, системные полномочия определяемые администратором предоставляются всем пользователям.
  • WITH ADMIN OPTION - позволяет получившему системные полномочия или роль предоставлять их в дальнейшем другими пользователям или ролям. Такое решение в частности включает и возможность изменение или удаления роли.

Давайте посмотрим какие системные полномочия могут предоставляться. Основных операций в языке DDL три - это CREATE, ALTER, DROP.

  • ALTER DATABASE - Позволяет изменять саму БД.
  • ALTER USER - Позволяет изменять пользователя и его параметры (пароль, профиль, роль и т.д.)
  • ALTER PROFILE - Позволяет изменять профили.
  • ALTER TABLESPACE - Позволяет изменять табличные пространства.
  • ALTER ANY PROCEDURE - Разрешает изменение любой хранимой функции процедуры или пакета в любой схеме.
  • ALTER ANY ROLE - Разрешает изменение любой роли БД.
  • ALTER ANY SEQUENCE - Разрешает изменение любой последовательности в БД.
  • ALTER ANY TABLE - Разрешает изменение любой таблицы или вида в схеме БД.
  • ALTER ANY TRIGGER - Позволяет разрешать, запрещать компилировать любой триггер в любой схеме БД.
  • ALTER ANY INDEX - Разрешает изменение любого индекса в любой схеме.

Группа CREATE:

Позволяет создавать в любой схеме соответствующий объект:

Позволяет создавать в конкретной схеме соответствующий объект:

Удаление объектов в любой схеме, а так же очистка таблиц:

Удаление объектов в схеме:

И еще полезные системные привилегии:

Вот далеко не полный список системных привилегий, которые предоставляются оператором GRANT. Для начала я думаю хватит. А дальше все зависит от вас. Давайте теперь рассмотрим предоставление объектных привилегий. Здесь все выглядит вот так:

object_privilege - предоставляемая привилегия - одна из:

COLUMN - определяет столбец таблицы или вида, на который распространяется предоставляемая привилегия.

ON - определяет объект (таблицу, вид, и т.д.)

TO - указывает кому предоставляется привилегия.

WITH ADMIN OPTION - позволяет имеющему эту привилегию предоставлять их в дальнейшем другими пользователям или ролям.

Как с работать с этим типом мы с вами уже пробовали в начале этого шага! Можете, например добавить еще что-нибудь к вышеизложенному примеру. И наконец, давайте рассмотрим как привилегии изымаются или удаляются. Для этого необходимо применять оператор REVOKE. Его синтаксис аналогичен первым двум операторам за небольшим исключением:

Например, чтобы изъять привилегию на выборку из таблицы SALESREPS для схемы DUMMY введите следующее находясь в схеме MILLER:

Получим примерно следующее:

Вот таким образом применяя операторы GRANT и REVOKE, можно строить взаимоотношение схем и строить политику доступа к объектам БД. Попробуйте создать в новом пользователе несколько объектов и разрешить обращаться к ним из схемы MILLER. Если что не получится пишите!

При хранении информации в СУБД одной из основных задач остается обеспечение безопасности данных. В языке SQLиспользуется следующие основные принципы защиты данных:

§ В БД действующими лицами являются пользователи. Если с данными происходит какая либо манипуляция, то она происходит от имени конкретного пользователя. СУБД может отказаться выполнить запрашиваемые действия в зависимости от того, какой пользователь запрашивает это действие.

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

§ В SQL используется система привилегий, т.е. прав пользователя на проведение тех или иных действия над определенным объектом базы данных.

Вообще говоря, администратор БД сам создает пользователей и дает им привилегии, но, с другой стороны, пользователи, которые создают таблицы, сами имеют права на управление этими таблицами. Существует несколько типов привилегий, соответсвующих целому ряду типов операций. В SQLпривилегии даются и отменяются двумя кодами SQL- GRANT(допуск) и REVOKE(отмена).

Каждый пользователь в среде SQLимеет специальное идентификационное имя или номер (ID) доступа. Команда, посланная в БД, ассоциируется с определенным пользователем, т.е. специальным идентификатором доступа. Поскольку это относится к SQL БД, IDразрешений – это имя пользователя, и SQL можетиспользовать специальное ключевое слово USER, которое ссылается к идентификатору доступа, связанному с текущей командой. Команда интерпретируется и разрешается (или запрещается) на основе информации, связанной с идентификатором доступа пользователя, подавшего команду.

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

SQLБД может использовать собственную процедуру входа в систему или может позволить другой программе (например, операционной системе компьютера) обрабатывать файл регистрации и получать IDдоступа. Однако каким бы способом СУБД не пользовались, в любом случае SQLбудетиметь

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

Каждый пользователь в SQL БДимеет набор привилегий. Эти привилегии могут изменяться со временем – новые добавляться, старые удаляться. Стандартные SQLпривилегий, определенные ANSI- это привилегии объекта. Это означает, что пользователь имеет привилегию для выполнения данной команды только на определенном объекте в БД. Привилегии объекта связаны одновременно и с пользователями и с таблицами, т е. привилегий дается определенному пользователю в указанной базовой таблице или представлении. При этом не стоит забывать, что пользователь, создавший таблицу любого вида, является ее владельцем. Это в свою очередь означает, что такой пользователь имеет все привилегии в этой таблице и может передавать привилегии другим пользователям для этой таблицы.

Привилегии, которые можно назначить пользователю, следующие:

§ SELECT-пользователь с этой привилегией может выполнять запросы к таблице;

§ INSERT-пользователь с этой привилегией может выполнять вставку записей, т.е. команду INSERT в таблице;

§ UPDATE-пользователь с этой привилегией может выполнять корректировку данных, т.е команду UPDATE к данной таблице;

§ DELETE-пользователь с этой привилегией может выполнять команду DELETE в таблице;

§ REFERENCES- с этой привилегией пользователь имеет возможность определить внешний ключ, который использует один или более столбцов данной таблицы. Как родительский ключ.

§ INDEX- дает право пользователю создавать индекс в таблице;

§ SYNONYM- пользователь, обладающей этой привилегией, имеет право создавать синоним для объекта;

§ ALTER дает право пользователю выполнять команду ALTER TABLE в данной таблице.

Итак, SQLназначает пользователям эти привилегии с помощью команды GRANT.Например, если пользователь SA владеет таблицей студентов STUDENTS и желает позволить пользователю SHER выполнить запрос к ней, то SA должен в этом случае выполнить следующую команду:

GRANT SELECT ONSTUDENTS TOSHER;

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

Когда SQLполучает командуGRANT,он проверяет привилегии пользователя, подавшего ее, и определяет ее допустимость. При этом SHER самостоятельно не может выполнить эту команду или предоставить право SELECTдругому пользователю,т.к. таблица ему не принадлежит. Если же для пользователя SHER необходимо предоставить право вставлять в таблицу строки, то это можно реализовать с помощью следующего предложения:

GRANT INSERT ONSTUDENTS TOSHER;

Однако часто приходится передавать несколько привилегий отдельному пользователю командой GRANT.Тогда списки привилегий или пользователей в команде отделяют запятыми. Например, с целью предоставления привилегий для запроса и втавки значений пользователям SHER и MAGв таблице STUDENTS, можно воспользоваться командой:

GRANT SELECT, INSERT ONSTUDENTS TOSHER, MAG;

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

привилегии для всех указанным пользователей.

Все привилегии объекта используют один и тот же синтаксис, кроме команд UPDATE и REFERENCES,в которых можно дополнительно указывать имена полей. Например команда:

GRANT URDATE ONSTUDENTS TOSHER;

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

GRANT URDATE (STIP) ONSTUDENTS TOSHER;

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

GRANT URDATE (SFAM,STIP) ONSTUDENTS TOSHER;

При использовании привилегии REFERENCESследует тому же самомуправилу, что и дляURDATE.Когда предоставляемая привилегия REFERENCESдругому пользователю, он сможет создавать внешние ключи, ссылающиеся на столбцы таблицы, как на родительские ключи.

Подобно URDATE,для привилегии REFERENCESможет быть указан список из одного или более столбцов, для которых предназначена эта привилегия. Например, можно предоставить SHER право использовать STUDENTS, как таблицу родительского ключа, с помощью следующей команды:

GRANT REFERENCES (SNUM,STIP) ONSTUDENTS TOSHER;

Эта команда дает SHER право использовать поля SNUM,STIP в качестве родительских ключей по отношению к любым внешним ключам в его таблицах. Как и в случае с привилегией URDATE,здесь можно исключать список полей и, таким образом, позволять всем без исключения столбцам быть используемыми в качестве родительских ключей, что осуществляется с помощью команды:

GRANT REFERENCES ONSTUDENTS TOSHER;

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

SQLподдерживает два аргумента для команды GRANT,которые имеют специальное значение- это ALL PRIVILEGES (илиALL ) PUBLIC.

ALLиспользуется вместо имен привилегий в команде GRANTдля того, чтобы отдать все привилегии в таблице.Например, для передачи пользователю SHER всего набора привилегий для таблицы STUDENTS, необходимо выполнить следующее:

GRANT ALL ONSTUDENTS TOSHER;

Привилегии PUBLICбольше похожи на тип аргумента для таблицы- когда она предоставляется, все пользователи ее получают автоматически. Наиболее часто это применяется для привилегии SELECT вопределенных базовых таблицах или представлениях, которые необходимо сделать доступным для любого пользователя. Например, для того, чтобы позволить любому пользователю просматривать таблицу STUDENTS, необходимо выполнить следующее:

GRANT SELECT ONSTUDENTS TOSHER;

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

Иногда при создании таблицы возникает необходимость в том, чтобы другие пользователи могли получать и передавать привилегии в таблице. SQLпозволяет делать это с помощью команды WITH GRANT OPTION.Например, если SA желает, чтобы SHER имел право предоставлять привилегию SELECTв таблице STUDENTS другим пользователям, это можно реализовать следующим образом:

GRANT SELECT ONSTUDENTS TOSHER

WITH GRANT OPTION;

После этого SHER получает право передавать привилегию SELECTтретьим

лицам, например, он может использовать такие команды:

GRANT SELECT ONSTUDENTS TOMAG;

GRANT SELECT ONSTUDENTS TOMAG

WITH GRANT OPTION;

Таким образом, пользователь с помощью GRANT OPTIONнаходится в особой привилегии для данной таблицы, и может, в свою очередь, предоставить эту привилегию к этой же таблице другому пользователю, в том числе использовать GRANT OPTIONдля передачи этой возможности. Однако стоит помнить , что это не меняет принадлежности самой таблицы, т.е. как и прежде, таблица принадлежит её создателю. Пользователь с помощью же GRANT OPTIONво всех привилегиях для данной таблицы будет имеет всю полноту власти в этой таблице.

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

REVOKE INSERT ON STUDENTS FROMSHER;

Использование списков привилегий и пользователей здесь допустимы, как и в случае с GRANT.Поэтому разрешается ввести команду, которая отменит привилегии на удаление и вставку для пользователей SHER и MAG:

REVOKE DELETE, INSERT ON STUDENTS TO SHER, MAG;

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

Действия привилегий можно сделать более точными, если их использовать для представлений. Всякий раз, когда передаются привилегии в базовой таблице пользователю, то она автоматически распространяется на все ее строки, а при использовании возможных исключений UPDATEи REFERENCES-и на все поля таблицы. Создавая представление, которое ссылается на основную таблицу, и затем переносит привилегию на представление, а не на таблицу, можно ограничивать эти привилегии.

Чтобы создавать представление, пользователь должен иметь привилегию SELECTво всех таблицах, на которые ссылается определение представления. Если представление модифицируемое, то любая привилегия INSERT,UPDATE или DELETE,которые имеет пользователи в базой таблице, будет автоматически передаваться представлению. Если имеет место недостаток в привилегиях на модификацию в базовых таблицах, к сожалению, пользователь не сможет получить их в представлениях , которые создал, даже если сами эти представления являются модифицируемыми. Причиной этому является использование внешних ключей в представлениях.

Предположим, что необходимо пользователю SHER предоставить возможность просматривать только поля SNUM и SFAM таблицы STUDENTS. Это реализуется путем создания представления

GREATE VIEWTEST

AS SELECTSNUM, SFAM

FROMSTUDENTS

А затем предоставления пользователю SHER привилегии SELECTв представлении, а не в самой таблице, т.е.

GRANT SELECT ONTEST TOSHER;

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

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

Например, чтобы предоставить пользователю SHER привилегию UPDATE в таблице STUDENTS, но так, что модифицироваться могут данные для студентов с нулевой стипендией, создается такое представление:

GREATE VIEWNULLSTIP

AS SELECT*

FROMSTUDENTS

WHERESTIP = 0

WITH CHECK OPTION;

А затем – передается привилегия UPDATE:

GRANT UPDATE ON NULLSTIP TOSHER;

В этом заключается отличие привилегии для определенных строк от привилегии UPDATEдля некоторых столбцов, которая распространена на все столбцы таблицы. ФразаWITH CHECK OPTIONпредохраняет

SHER от замены значения поля STIP на любое значение, кроме 0.

Другая возможность состоит в том, чтобы предлагать пользователям доступ к уже извлеченным данным, а не к фактическим значением в таблице. В данном случае удобно воспользоваться агрегатными функциями. Например, можно создать представление, которое выводит среднее значение оценок каждого студента:

GREATE VIEW AVGNUM

AS SELECTSNUM, AVG( OCENKA )

FROMUSP

GROUP BYSNUM;

Потом передать пользователю SHER привилегию SELECTв представлении

GRANT SELECT ON AVGNUM TOSHER;

Кстати, альтернативной ограничение является использование с WITH CHECK OPTION.Например, можно создать следующее представление для ввода оценок в таблицу успеваемости:

GREATE VIEWINPOC

AS SELECT*

FROMUSP

WHEREOCENKA IN (1, 2, 3, 4, 5)

WITH CHECK OPTION;

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

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

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

§ CONNECT –состоит из права зарегистрироваться и права создавать представление и синонимы, если пользователю переданы соответствующие привилегии объекта;

§ RESOURCE –состоит из права создавать базовые таблицы;

§ DBA –это привилегия пользователя, дающая самые высокие полномочия в БД.

Некоторые системы, кроме того, имеют специального пользователя, иногда называемого SYSADM, SYS или SA,который имеет наивысшие полномочия. Фактически это – специальное имя, а не просто пользователь с особой DBAпривилегией. Желательно, чтобы только один человек имел право зарегистрироваться с именем SA.

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

GRANT RESOURCE TOSHER;

Первоначально пользователь SHER, в большинстве случаев, создается администратором БД, автоматически предоставляя ему привилегию CONNECT.В этом случае обычно добавляется предложение IDENTIFIED BY,указывающее пароль. Например, для первоначальной регистрации пользователя администратор базы данных вводит следующее:

GRANT CONNECT TOSHER IDENTIFIED BYRoman 18;

Это приведет к созданию пользователя именем SHER, даст ему право регистрироваться и назначить ему пароль Roman 18. После этого SHER и администратор БД имеют возможность при необходимости изменить пароль.

Если новый пользователь будет создавать базовые таблицы, для него потребуется также предоставить привилегию RESOURCE.Данное действие поражает другую привилегию CONNECTэтого пользователя, и в БД имеются таблицы, которые им созданы, команда будет отклонена, потому что это действие оставит таблицу без владельца, что не допускается. Следовательно, перед удалением пользователя сначала необходимо удалить все созданные им таблицы.

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

Создание нового пользователя и настройка прав доступа в 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 для вас больше не проблема. Спасибо за внимание!

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