Как назначить пользователю права на базу данных sql запросом
Перейти к содержимому

Как назначить пользователю права на базу данных sql запросом

  • автор:

mysql. Назначить права доступа

Данный материал предоставлен сайтом PacificSky.Ru исключительно в ознакомительных целях. Администрация не несет ответственности за его содержимое.

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

  • CREATE – Позволяет пользователю создавать базы данных/таблицы
  • SELECT – Позволяет пользователю делать выборку данных
  • INSERT – Позволяет пользователю добавлять новые записи в таблицы
  • UPDATE – Позволяет пользователю изменять существующие записи в таблицах
  • DELETE – Позволяет пользователю удалять записи из таблиц
  • DROP – Позволяет пользователю удалять записи в базе данных/таблицах
GRANT [тип прав] ON [имя базы данных].[имя таблицы] TO ‘[имя пользователя]’@'localhost’;

К примеру представим, что нам необходимо для пользователя new-user предоставить права доступа на запись и чтение в базу данных mydb на таблицу posts:
По выше указанной схеме, после слова GRAND указываем типы прав INSERT и SELECT.
Далее после ON указываем название базы данных и после `.` указываем название таблицы. Соответственно после слова TO в кавычках указываем имя пользователя(В примере это new-user).

GRANT INSERT, SELECT ON mydb . posts TO 'new-user'@'localhost';

Если необходимо установить права доступа на всю базу данных и на все таблицы данной базы запрос изменится следующим образом:

GRANT INSERT, SELECT ON *.* TO 'new-user'@'localhost';

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

REVOKE ALL PRIVILEGES ON *.* FROM 'new-user'@'localhost';

Схема в данной команде будет выглядеть по аналогичным правилам:

REVOKE ALL PRIVILEGES ON [имя базы данных].[имя таблицы] FROM '[имя пользователя]'@'localhost';

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

FLUSH PRIVILEGES;

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

Управление пользователями базы данных

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

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

Виды пользователей базы данных

В Plesk существует два вида пользователей баз данных:

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

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

Универсальные пользователи имеют доступ не только ко всем уже существующим базам данных, но и ко всем вновь создаваемым.

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

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

Операции с пользователями базы данных

Можно создать, обновить или удалить пользователя базы данных на странице Сайты и домены > Базы данных > Управление пользователями.

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

Примечание: 1. You can remove a default database user only by removing the database associated with this user. Alternatively, you can edit the user and clear the Make the user default for this database option, and then remove the user.

2. If a database user was created by an APS app, you can remove this user only by removing the respective app.

3. A database user password must be at least 5 characters long, must not contain the user name or any extended ASCII table characters.

Управление доступом

Начиная с Plesk 12.0, вы можете разрешать или запрещать удаленный доступ к той или иной базе данных или разрешать доступ только с определенных компьютеров. Настройки доступа применяются к отдельным пользователям баз данных. Более подробную информацию смотрите в разделе Добавление правил доступа .

Права пользователя базы данных

Если вы используете MySQL или Microsoft SQL Server, вы можете управлять правами пользователей базы данных через интерфейс Plesk, чтобы разрешить или запретить им выполнение операций над структурой и данными таблиц. Для MySQL это такие права, как выполнять запросы , создавать записи , создавать , удалять и т.д., а для Microsoft SQL Server эти права определяются ролями на уровне базы данных, такими как db_ddladmin , db_datawriter , и т.д.

Чтобы помочь вам в предоставлении прав, в Plesk используются шаблоны наборов прав, называемые ролями. При создании каждой учетной записи пользователя базы данных, она получает набор прав по умолчанию. Этот набор прав соответствует роли Чтение и запись. Другие существующие роли ― Только чтение и Только запись. Кроме того, в MySQL можно создать Персональную роль с пользовательским набором прав.

Чтобы изменить права пользователя базы данных MySQL:

  1. Перейдите на страницу Сайты и домены >Базы данных >Управление пользователями и нажмите имя пользователя базы данных. По умолчанию вновь созданные пользователи баз данных имеют роль Чтение и запись. Вы можете просмотреть и изменить права, входящие в эту роль.
  2. Чтобы разрешить только чтение или только запись, выберите соответствующую роль (Только чтение или Только запись).
  3. Чтобы добавить или удалить права в уже выбранной для пользователя роли, поставьте или уберите соответствующие флажки (Выполнить запрос, Создать запись, Обновить, и т. д.). Обратите внимание, что при изменении набора прав роль становится Персональной.

Чтобы изменить права пользователя базы данных SQL Server:

  1. Перейдите на страницу Сайты и домены >Базы данных >Управление пользователями и нажмите имя пользователя базы данных. По умолчанию вновь созданные пользователи баз данных имеют роль Чтение и запись.
  2. Чтобы разрешить только чтение или только запись, выберите соответствующую роль (Только чтение или Только запись). Набор прав по умолчанию в Microsoft SQL Server таков:
Право Чтение и запись Только чтение Только запись
db_backupoperator
db_datareader
db_datawriter
db_ddladmin

Обратите внимание, что хостинг-провайдер может изменять эти наборы прав.

Автоматическое изменение ролей пользователей

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

В MySQL эти изменения не влияют на права существующих пользователей баз данных. Единственное, что изменится в их роли в Plesk, – роль станет Персональной, потому что их права больше не соответствуют их прежней роли (Чтение и запись, Только чтение или Только запись). В Microsoft SQL Server права (роли на уровне базы данных) существующих пользователей изменяются в соответствии с изменениями, внесенными хостинг-провайдером.

Хостинг-провайдер может навсегда запретить выполнение определенных действий для всех пользователей базы данных MySQL, например, запретить удалять объекты. В этом случае, право удалять объекты не показывается в Plesk. На Microsoft SQL Server, если право исключается из всех ролей Plesk, его лишаются все пользователи.

Права и привилегии пользователей СУБД MySQL

Базы данных (в т.ч. система MySQL) представляет собой сущность для хранения информации в виде таблиц. Дабы чужие БД не были доступны абсолютному каждому пользователю на сервере, существует система пользователей для этих баз данных. Сам доступ к какой-либо БД может быть назначен администратором (либо уполномоченным пользователем) другому пользователю, причем он может быть полным или в некоторой степени ограниченным. Более конкретно эта степень доступа выражается в привилегиях («правах» или «разрешениях»).

Права для пользователей MySQL

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

CREATE — позволяет создавать новые базы данных и таблицы

DROP — позволяет удалять базы данных или таблицы

INSERT — позволяет добавлять строки к таблице.

UPDATE — позволяет изменять содержание строк таблиц. Не путать с ALTER, которая позволяет изменять саму структуру таблиц (количество строк/столбцов, типы столбцов).

DELETE — противоположна INSERT — позволяет удалять строки из таблицы.

ALTER — позволяет изменять структуру таблиц. Требует CREATE и INSERT привилегии.

SELECT — позволяет читать (выводит строки) таблицы, используя выборки по столбцам и/или по некоторым арифметическим и логическим критериям.

GRANT OPTION — позволяет назначить конкретные права определенному пользователю (также и отобрать). Возможно дать/отобрать только те права, которыми назначающий сам располагает.

LOCK TABLES — блокирует таблицу на время искусственного внесения в нее изменений (администрирование), чтобы данные внутри нее не могли измениться своим естественным путем (во время рабочего процесса).

REFERENCES — позволяет создавать связь между таблицами по внешнему ключу.

EVENT — дает право на создание/изменение/удаление заданий для планировщика

TRIGGER — позволяет создавать/изменять/удалять триггеры (привязываемые к определенным таблицам), которые при выполнении операций DELETE, UPDATE или INSERT совершают дополнительные действия.

INDEX — привилегия даёт право добавлять/удалять индексы к (из) таблицам. Сами индексы назначаются вручную, и дают возможность сэкономить время на поиске строк.

CREATE TEMPORARY TABLES — позволяет создавать временные таблицы на время сессии.

CREATE VIEW — позволяет создать некоторое представление в виде таблицы, которая фактически не существует как единая и содержит лишь данные других таблиц. К примеру, в этом представлении можно собрать определенные сгруппированные данные из трёх таблиц (оператором SELECT) и по факту собранные данные будут лишь ссылаться на данные этих 3-х таблиц и также будут объединением, не нуждающимся в собственной таблице.

SHOW VIEW — позволяет проверить каким запросом (из каких данных состоит) создано определенное представление, заданное с помощью CREATE VIEW

CREATE ROUTINE — позволяет создать процедуру, которая является заготовленным набором SQL-команд.

ALTER ROUTINE — позволяет изменить процедуру, созданную посредством CREATE ROUTINE.

EXECUTE — позволяет вызывать готовые процедуры.

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

CREATE TABLESPACE (admin) — позволяет создавать/изменять/удалять пространства таблиц. Само это пространство является логическим и не связано со структурой БД или схемой. Оно декларирует расположение объектов БД на физических носителях и используется для оптимизации системы БД.

CREATE USER (admin) — позволяет создавать/изменять/переименовывать/удалять пользователей баз данных.

PROCESS (admin) — разрешает доступ к информации о потоках (процессах) исполняющихся на сервере.

PROXY (admin) — позволяет войти пользователем под видом другого пользователя. Используется администратором для проверки/отладки прав доступа у необходимого пользователя.

RELOAD (admin) — разрешает использование оператора FLUSH, который чистит кеш MySQL

REPLICATION CLIENT (admin) — позволяет выполнять операции SHOW MASTER STATUS, SHOW SLAVE STATUS и SHOW BINARY LOG.

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

SHOW DATABASES (admin) — позволяет выполнять оператор SHOW DATABASES. Пользователи, не имеющие подобной привилегии, при выполнении данного оператора смогут лишь увидеть базы данных к которым у них есть какие-либо права.

SHUTDOWN (admin) — привилегия позволяет выполнить оператор SHUTDOWN, выключающий MySQL сервер.

SUPER (admin) — привилегия, дающая право на множество операций:

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

ALL (admin) — пользователю, получившему данную привилегию, автоматически назначаются все права в рамках уровня привилегий (возможных привилегий в принципе, согласно контексту выдачи привилегий). Не назначается только привилегия GRANT OPTION в данном случае.

Назначение прав для пользователей MySQL в панелях управления хостингом

Рассмотрим далее процедуру назначения прав пользователям MySQL в таких панелях управления хостингом, как:

DirectAdmin

На главной странице DirectAdmin из под уровня пользователя в меню Your Account переходим в раздел MySQL Management:

Вход в меню MySQL management в DirectAdmin

Далее нам необходимо перейти в конкретную базу данных, чтобы управлять пользователями, имеющими доступ к ней или создать новую посредством ссылки Create new Database:

Выбор базы данных MySQL в DirectAdmin

Тут мы можем как создать нового пользователя для данной базы путем перехода по Create New Database User, так и привязать к ней существующего,. Следует отметить, что нет специально отведенного интерфейса для управления пользователями. Он доступен только посредством перехода через какую-либо базу данных. Чтобы дать пользователю права — переходим по ссылке modify privileges:

Выбор пользователя MySQL для изменения его привилегий в DirectAdmin

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

Изменение прав пользователя MySQL на базу данных в DirectAdmin

После этого произойдет переход на страницу подтверждения сохранения. Всё, права выданы.

cPanel

На главной странице cPanel нам необходимо найти раздел Базы данных в нем перейти по Базы данных MySQL:

Вход в меню MySQL Databases в cPanel

Все манипуляции с базами данных MySQL, пользователями БД и их правами производятся именно в этом меню.

Если у нас нет ни базы, ни пользователя, то создаем их в соответствующих разделах страницы:

Раздел «Текущие базы данных» MySQL в cPanel

Раздел Текущие базы данных обновится:

Раздел «Текущие базы данных» MySQL в cPanel

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

Раздел Текущие пользователи обновится:

Раздел «Текущие пользователи» баз данных MySQL в cPanel

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

Добавление пользователя в базу данных

После добавления пользователя к базе данных откроется диалоговое окно для назначения привилегий:

Изменение прав пользователя MySQL на базу данных в cPanel

Кнопка «Все права» эквивалентна привилегии ALL, описанной в начале руководства, и назначит все возможные права пользователю в контексте принадлежности пользователя определенной группе пользователей на уровне всего MySQL сервера.

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

Раздел Текущие базы данных

Готово. Пользователь назначен базе данных.

Webuzo

Webuzo состоит из 2-х панелей: администраторская и пользовательская. Переходим в пользовательскую панель и на главной странице выбираем Manage Databases

Вход в меню Manage Databases в Webuzo

На открывшейся странице мы можем:

Разделы меню Manage Databases в Webuzo

  • увидеть список существующих баз данных [Database(s)];
  • создать новую базу данных [Create Database];
  • увидеть список существующих пользователей баз данных [Database User(s)];
  • создать пользователя баз данных и назначить его определенной базе данных [Add User To Database]

Если целевой базы данных пока что не существует, то переходим в Create Database и создаем новую базу данных:

Создание новой базы данных MySQL в Webuzo

Если все же целевая база данных уже существует, то в управлении базами данных нам необходимо перейти в Add User To Database и создать нового пользователя БД или указать какого-либо существующего для его привязки к базе данных:

Создание нового пользователя баз данных MySQL и назначение пользователя базе данных в Webuzo

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

Изменение прав пользователя MySQL на базу данных в Webuzo

При успешном изменении прав в текущем окне появится надпись Database Privileges Updated. Задача выполнена.

Права и роли пользователя базы данных

В Plesk предусмотрены роли для пользователей баз данных MySQL и Microsoft SQL Server. Роли работают как шаблоны, помогающие предоставлять права пользователям баз данных. Поддерживаются следующие роли пользователей баз данных: Чтение и запись (используется по умолчанию), Только чтение и Только запись. Для каждой роли существует определенный набор прав, который при ее присвоении предоставляется учетной записи пользователя базы данных. Вы можете изменять наборы прав для каждой из ролей.

Кроме того, MySQL поддерживает Персональную роль с пользовательским набором прав. Пользователи Microsoft SQL Server не могут изменять наборы прав, предоставленных при присвоении роли.

Вы можете не предоставлять и запретить пользователям Plesk предоставлять какое-либо право.

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

Роли пользователей баз данных MySQL

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

Наборы прав MySQL для каждой роли по умолчанию перечислены ниже.

Право Чтение и запись Только чтение Только запись
Select
Insert
Update
Delete
Create
Drop
Alter
Index
Create Temporary Tables
Lock Tables
Create View
Show View

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

Помните, что клиенты Plesk при этом все же смогут выбирать больше прав, чем вы указали в файле panel.ini , если вы не запретили их использование (смотрите далее на этой странице).

[databaseManagement] features.roles.mysql.readWrite = Select,Update,Insert features.roles.mysql.readOnly = Select features.roles.mysql.writeOnly = Update 

Примечание: Изменение набора прав для роли (например, роли Чтение и запись) не влияет на права уже существующих пользователей базы данных MySQL с этой ролью. Роль таких пользователей базы данных автоматически изменится на Персональную.

Как отозвать у всех пользователей какое-либо право

Вам может потребоваться отозвать какое-либо право, например права Delete, у всех пользователей баз данных. Чтобы отозвать право, пропишите список прав MySQL в файле panel.ini , не включая в него право, которое вы хотите отозвать.

[databaseManagement] features.privileges.mysql.dataAccess = Select, Insert, Update, Delete features.privileges.mysql.structureAccess = Create, Drop, Alter, Index, Create Temporary Tables, Lock Tables, Create View, Show View 

Указанные в списке права будут отображаться в интерфейсе Plesk (Сайты и домены > Базы данных > Управление пользователями). Пользователи смогут предоставлять или отзывать только перечисленные права. Если соответствующего права нет в списке, с точки зрения Plesk это действие запрещено пользователям баз данных.

Примечание: Право отзывается только после того, как пользователь Plesk сохранит какие-либо изменения в настройках пользователя базы данных: (Сайты и домены > Базы данных > Управление пользователями > имя пользователя > ОК).

Роли пользователей баз данных Microsoft SQL Server

В Plesk с сервером баз данных Microsoft SQL Server пользователи могут выбирать роли (Чтение и запись, Только чтение, Только запись), но не могут добавлять или удалять отдельные права (роли на уровне базы данных SQL Server). Права не отображаются в интерфейсе Plesk.

Ниже перечислены права, предоставленные по умолчанию каждой роли в Microsoft SQL Server:

Право Чтение и запись Только чтение Только запись
db_backupoperator
db_datareader
db_datawriter
db_ddladmin

Чтобы изменить набор прав по умолчанию для какой-либо роли, внесите изменения в файл panel.ini , перечислив необходимые права.

[databaseManagement] features.roles.mssql.readWrite = db_datareader,db_backupoperator,db_ddladmin features.roles.mssql.readOnly = db_datareader,db_backupoperator features.roles.mssql.writeOnly = db_datawriter 

Примечание: При изменении набора прав для роли изменяются права существующих пользователей базы данных с этой ролью. У всех существующих и вновь создаваемых пользователей с этой ролью будет набор прав, который вы указали в panel.ini .

Восстановление прав по умолчанию для пользователей Microsoft SQL Server

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

%plesk_dir%bin\repair.exe —update-mssql-users-permissions [-database-server ] [-database-name ]

Примечание: Если вы изменили набор прав для роли (например, роли Чтение и запись) в файле panel.ini , в результате работы команды —update-mssql-users-permissions будет восстановлен набор указанных в файле прав, а не набор по умолчанию (например, набор прав по умолчанию для роли Чтение и запись: db_datareader,db_datawriter,db_backupoperator,db_ddladmin ).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *