Как удалить привилегию у пользователя

Обновлено: 04.07.2024

Привилегии пользователей назначаются им администратором базы данных и определяют,какие действия над данными и над объектами схемы являются разрешенными. При контроле привилегий используется имя пользователя базы данных , называемое иногда идентификатором авторизации (Autorization ID ). Некоторые СУБД идентифицируют понятие " пользователь " с понятием "учетная запись ".

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

После успешного завершения процедуры идентификации открывается сеанс пользователя и устанавливается соединение с базой данных.

Существуют привилегии двух типов:

  • системные привилегии (system privileges ), контролирующие общий доступ к базе данных ;
  • объектные привилегии (object privileges ), контролирующие доступ к конкретным объектам базы данных .

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

Для управления привилегиями определены следующие правила:

  • объект принадлежит пользователю, его создавшему (если синтаксисом не указано создание объекта другого пользователя, конечно, при соответствующих полномочиях);
  • владелец объекта , согласно стандарту, может изменять привилегии своего объекта (в коммерческих СУБД, таких как Oracle, уровни полномочий представляют собой более сложную иерархию);
  • объектная привилегия всегда соотносится с конкретным объектом, а системная - с объектами вообще.

Язык SQL поддерживает следующие привилегии:

  • ALTER - позволяет выполнять оператор ALTER TABLE ;
  • SELECT - позволяет выполнять оператор запроса;
  • INSERT - позволяет выполнять добавление строк в таблицу;
  • UPDATE - позволяет изменять значения во всей таблице или только в некоторых столбцах;
  • DELETE - позволяет удалять строки из таблицы;
  • REFERENCES - позволяет устанавливать внешний ключ с использованием в качестве родительского ключа любых столбцов таблицы или только некоторых из них;
  • INDEX - позволяет создавать индексы (не входит в стандарт SQL-92 );
  • DROP - позволяет удалять таблицу из схемы базы данных .

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

Предоставление привилегии выполняется SQL-оператором GRANT , который имеет в стандарте SQL-92 следующее формальное описание:

где privilege определяется как

После фразы GRANT через запятую можно перечислить список всех назначаемых привилегий.

Фраза ON определяет объект, для которого устанавливается привилегия.

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

Так, оператор GRANT SELECT ON tbl1 TO PUBLIC; предоставляет доступ к выполнению оператора SELECT для таблицы tbl1 не только всем существующим пользователям, но и тем, которые позднее будут добавлены в базу данных.

Оператор GRANT UPDATE ON tbl1 TO user1; предоставляет пользователю user1 привилегию UPDATE на всю таблицу, а оператор GRANT UPDATE (f1,f2) ON tbl1 TO user1 предоставляет привилегию UPDATE для изменения только столбцов f1 и f2 .

Фраза WITH GRANT OPTION предоставляет получающему привилегию пользователю дополнительную привилегию GRANT OPTION ,позволяющую выполнять передачу полученных привилегий.

Отмена привилегии выполняется SQL-оператором REVOKE , который имеет в стандарте SQL-92 следующее формальное описание:

После фразы REVOKE через запятую можно перечислить список всех отменяемых привилегий.

Фраза ON определяет объект, для которого отменяется привилегия.

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

Фраза GRANT OPTION FOR определяет отмену не самих привилегий, а только права их передачи другим пользователям.

Если одна привилегия вместе с опцией WITH GRANT OPTION была последовательно передана от одного пользователя другому несколько раз, то образуется цепочка зависимых привилегий. Фразы CASCADE и RESTRICT определяют, что будет происходить с этими привилегиями при отмене одного из звеньев этой цепочки.

Если при отмене зависимой привилегии для объекта не остается ни одной существующей привилегии, то такой объект называется несостоявшимся. Например, подобное может произойти с представлением, созданным как запрос к таблице, привилегия на которую была утрачена. Эта ситуация показана на рис. 8.1.

Если при отмене привилегии появляется несостоявшийся объект, то фраза RESTRICT предотвратит выполнение оператора REVOKE , и никакие привилегии отменены не будут.

Если указана фраза CASCADE и при отмене привилегии появляется несостоявшийся объект, то все несостоявшиеся объекты (представления) удаляются, а при наличии несостоявшихся ограничений в таблицах они отменяются автоматически, выполнением оператора ALTER TABLE несостоявшиеся ограничения в доменах отменяются автоматически выполнением оператора ALTER DOMAIN .

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

Oracle-создание, удаление, изменение пользователей, ролей и разрешений

Системные разрешения и разрешения для объектов

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

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

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

Создать пользователя

Например, чтобы создать обычную пользовательскую hern с паролем 123456:

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

удалить пользователей

Если объект принадлежит пользователю (например, такие операции, как добавление, удаление, изменение и т. Д.), Его нельзя удалить напрямую, иначе будет возвращено значение ошибки. Укажите ключевые слова CASCADE , Вы можете удалить все объекты пользователя, а затем удалить пользователя.

Орган власти

Создать сеанс Разрешить пользователям входить в систему с разрешениями базы данных

Создать таблицу Разрешить пользователям создавать разрешения для таблиц

Неограниченное табличное пространство Разрешить пользователям создавать таблицы в других табличных пространствах по желанию

Роли:connect、resource、dba

CONNECT роль

Типичные права, предоставляемые конечным пользователям, самые основные права,Уметь подключаться к базе данных Oracle и выполнять SELECT, UPDATE, INSERTT и другие операции, когда у вас есть доступ к таблицам других пользователей.
ALTER SESSION - изменить сеанс
CREATE CLUSTER - создать кластер.
CREATE DATABASE LINK - создать ссылку на базу данных.
CREATE SEQUENCE --создать последовательность
CREATE SESSION - установка сеанса.
CREATE SYNONYM --Создание синонимов
CREATE VIEW - создать представление
Роль РЕСУРСА

Разрешено разработчикам,Уметь создавать таблицы, последовательности, представления и т. Д. По своей собственной схеме.
CREATE CLUSTER - создать кластер.
CREATE PROCEDURE - Процесс создания
CREATE SEQUENCE --создать последовательность
CREATE TABLE --Создать таблицу
CREATE TRIGGER - создать триггер.
CREATE TYPE - создать тип

Роль администратора базы данных

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

Порядок авторизации

Отозвать полномочия

Создание / авторизация / удаление ролей

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

Создание роли

Роль авторизации

Примечание. Все пользователи с этой ролью имеют разрешения на выборочный запрос в таблице.

Удалить роль

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

Таблицы словаря данных, относящиеся к безопасности разрешений:

ALL_TAB_PRIVS
ALL_TAB_PRIVS_MADE
ALL_TAB_PRIVS_RECD
DBA_SYS_PRIVS
DBA_ROLES
DBA_ROLE_PRIVS
ROLE_ROLE_PRIVS
ROLE_SYS_PRIVS
ROLE_TAB_PRIVS
SESSION_PRIVS
SESSION_ROLES
USER_SYS_PRIVS
USER_TAB_PRIV

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

изменить любой кластер изменить разрешения любого кластера
изменить любой индекс изменить разрешение любого индекса
изменить любую роль, изменить разрешения любой роли
изменить любую последовательность Разрешение на изменение любой последовательности
изменить любой снимок изменить разрешение любого снимка
изменить любую таблицу изменить разрешение любой таблицы
изменить любой триггер изменить разрешение любого триггера
alter cluster изменить разрешения кластера
изменить базу данных, чтобы изменить разрешения базы данных
изменить процедуру изменить разрешения хранимой процедуры
alter profile Разрешение на изменение профиля ограничения ресурсов
изменить стоимость ресурса. Настроить авторитет стоимости ресурса истории.
изменить сегмент отката изменить разрешения сегмента отката
изменить последовательность, чтобы изменить разрешения последовательности
alter session изменить разрешение сеанса базы данных
изменить систему, чтобы изменить разрешения, установленные сервером базы данных
изменить таблицу, изменить разрешения таблицы
изменить табличное пространство, чтобы изменить разрешения для табличного пространства
изменить пользователя изменить полномочия пользователя
анализировать Используйте команду анализа для анализа любой таблицы, индекса или кластера в базе данных.
проверять все Задать параметры аудита для любого объекта базы данных
система аудита позволяет проводить аудит работы системы
резервное копирование любой таблицы Разрешение на резервное копирование любой таблицы
стать пользователем Разрешение на изменение статуса пользователя
зафиксировать любую таблицу Разрешение на отправку таблицы
создать любой кластер Разрешение на создание кластера для любого пользователя
создать любой индекс Разрешение на создание индекса для любого пользователя
создать разрешение любой процедуры для создания хранимых процедур для любого пользователя
создать любую последовательность Разрешение на создание последовательности для любого пользователя
создать любой снимок Разрешение на создание снимков для любого пользователя
создать любое разрешение на создание синонимов для создания синонимов имен для любого пользователя.
создать любую таблицу Разрешение на создание таблицы для любого пользователя
создать любое разрешение триггера для создания триггеров для любого пользователя
создать любое представление Разрешение на создание представлений для любого пользователя
создать разрешение кластера для создания кластеров для пользователей
создать разрешения связи с базой данных, созданные для пользователей
разрешение на создание процедуры для создания хранимых процедур для пользователей
Разрешение на создание профиля для создания профиля ограничения ресурсов
создать ссылку на общедоступную базу данных Разрешение на создание ссылки на общедоступную базу данных
создать разрешение на общедоступный синоним для создания общедоступного синонима
Create role Permission для создания роли
создать сегмент отката Разрешение на создание сегмента отката
создать сеанс Разрешение на создание сеанса
создать последовательность Разрешение на создание последовательности для пользователя
Разрешение на создание снимков для создания снимков для пользователей
разрешение на создание синонимов для создания синонимов для пользователей.
Разрешение на создание таблиц для создания таблиц для пользователей
разрешение на создание табличного пространства для создания табличного пространства
создать разрешение пользователя для создания пользователей
создать разрешение на просмотр для создания представлений для пользователей
удалить любую таблицу Разрешение на удаление любой строки таблицы
удалить любое представление Разрешение на удаление любой строки представления
удалить снимок Удалить разрешение строки снимка
удалить таблицу - это разрешение пользователя на удаление строк таблицы.
удаление представления - это разрешение пользователя на удаление строк представления.
drop any cluster Разрешение на удаление любого кластера
удалить любое разрешение индекса, чтобы удалить любой индекс
отменить разрешение любой процедуры для удаления любой хранимой процедуры
удалить любую роль, удалить все разрешения роли
удалить любое разрешение на последовательность, чтобы удалить любую последовательность
удалить любой снимок Разрешение на удаление любого снимка
удалить все синонимы удалить любые разрешения для синонимов
удалить любое разрешение таблицы, чтобы удалить любую таблицу
удалить любой триггер удалить любое разрешение триггера
удалить любое представление удалить любое разрешение на просмотр
сбросить разрешение профиля, чтобы удалить профиль ограничения ресурсов
drop public cluster Удалить разрешение общедоступного кластера
удалить ссылку на общедоступную базу данных удалить разрешение на общедоступную ссылку на данные
удалить общедоступный синоним удалить разрешение общедоступного синонима
drop rollback segment Разрешение на удаление сегмента отката
разрешение на удаление табличного пространства для удаления табличного пространства
сбросить пользователю удалить разрешения пользователя
выполнение любой процедуры Разрешение на выполнение любой хранимой процедуры
Разрешение на выполнение функции для выполнения сохраненных функций
Разрешение на выполнение пакета для выполнения пакета хранилища
Разрешение на выполнение процедуры для выполнения хранимых процедур пользователя
принудительно любая транзакция управляет разрешением вывода любой незафиксированной транзакции
force transaction управляет разрешениями вывода незафиксированных пользовательских транзакций.
предоставить любую привилегию предоставить любую привилегию
предоставить любую роль предоставить любые разрешения роли
индексная таблица Разрешение на добавление индекса в таблицу
вставить любую таблицу Разрешение на вставку строк в любую таблицу
вставить снимок Разрешение на вставку строк в снимок
вставить таблицу Разрешение на вставку строк в пользовательскую таблицу
разрешение на вставку представления для вставки строк в представление пользователя
заблокировать любое разрешение таблицы, чтобы заблокировать любую таблицу
менеджер управления табличным пространством (доступность резервной копии) полномочия табличного пространства
ссылается на разрешения таблицы справочной таблицы
ограниченный сеанс Право на создание ограниченных сеансов базы данных
выбрать любую последовательность Разрешение на использование любой последовательности
выбрать любую таблицу, доступ к любой таблице
выберите разрешение на создание снимка, чтобы использовать снимок
выберите последовательность Разрешение на использование пользовательской последовательности
выбрать таблицу Использовать разрешения пользовательской таблицы
выберите разрешение просмотра, чтобы использовать представление
разрешение неограниченного табличного пространства для неограниченного размера табличного пространства
обновить любую таблицу изменить разрешение любой строки таблицы
обновить снимок: изменить разрешение строки снимка.
обновить таблицу Разрешение на изменение строк в пользовательской таблице
обновить представление - изменить разрешение строки в представлении.

После того, как вы установили и настроили MySQL, вам необходимо создать базы данных, таблицы и пользователей. Конечно, вы можете сделать это от имени суперпользователя root, но это не безопасно. Да и большинство приложений не позволят вам такой вольности, например, Phpmyadmin не даст авториrзоваться от имени суперпользователя.

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

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

1. Как создать пользователя MySQL

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


Теперь можно работать. Для создания пользователя используется команда CREATE USER, её синтаксис такой:

CREATE USER 'имя_пользователя' @ 'хост' IDENTIFIED BY 'пароль' ;

Кроме имени пользователя, здесь нужно задать хост, с которого может авторизоваться этот пользователь. Здесь может быть доменное имя, IP-адрес, адрес подсети или знак "%", который означает все возможные хосты. Это очень удобно, потому что вы можете создать пользователя, к которому можно будет подключится только локально или настроить отдельно права для локального или удалённого пользователя.

Например, давайте создадим локального пользователя test_user с паролем password:

CREATE USER 'test_user'@'localhost' IDENTIFIED BY 'password';


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

CREATE USER 'test_user'@'%' IDENTIFIED BY 'password';


Смотрим наших пользователей:


Все пользователи созданы.

2. Права пользователя MySQL

Создать пользователя - это ещё далеко не всё, теперь нужно назначить ему права. Для этого используется команда GRAT. У неё такой синтаксис:

GRANT привилегии ON база_данных . таблица TO ' имя_пользователя ' @ ' хост ' ;

Здесь можем дать определённые привилегии для опредёленного пользователя к базе данных или таблице. Если нужно дать права для всех баз данных или таблиц, используйте вместо названия звездочку - "*". Вот основные права пользователя MySQL, которые вы можете использовать:

  • ALL PRIVILEGES - все, кроме GRANT;
  • USAGE PRIVILEGES - никаких привилегий;
  • SELECT - делать выборки из таблиц;
  • INSERT - вставлять данные в таблицу;
  • UPDATE - обновлять данные в таблице;
  • DELETE - удалять данные из таблицы;
  • FILE - разрешает читать файлы на сервере;
  • CREATE - создавать таблицы или базы данных;
  • ALTER - изменять структуру таблиц;
  • INDEX - создавать индексы для таблиц;
  • DROP - удалять таблицы;
  • EVENT - обработка событий;
  • TRIGGER - создание триггеров.

Также доступны такие привилегии администрирования баз данных:

  • GRANT - изменять права пользователей;
  • SUPER - суперпользователь;
  • PROCESS - получение информации о состоянии MySQL;
  • RELOAD - позволяет перезагружать таблицы привилегий;
  • SHUTDOWN - позволяет отключать или перезапускать базу данных;
  • SHOW DATABASES - просмотр списка баз данных;
  • LOCK TABLES - блокирование таблиц при использовании SELECT;
  • REFERENCES - создание внешних ключей для связывания таблиц;
  • CREATE USER - создание пользователей;

Чтобы дать права пользователю MySQL на обновление и добавление записей для базы данных test_database, выполните:

GRANT SELECT,UPDATE,INSERT ON test_database . * TO 'test_user'@'localhost';

Дальше дадим этому же пользователю все права над этой базой данных:

GRANT ALL PRIVILEGES ON test_database . * TO 'test_user'@'localhost';

Теперь посмотрим привилегии нашего пользователя:

SHOW GRANTS FOR 'test_user'@'localhost';


Мы видим, что для всех баз данных и таблиц привелегий нет, но зато есть все привилегии для базы данных test_database. Вот так это работает. После обновления прав пользователя необходимо обновить таблицу прав пользователей MySQL в памяти. Для этого выполните:

3. Удаление прав пользователя MySQL

Чтобы отозвать права у пользователя MySQL, используйте команду REVOKE вместо GRANT. Её синтаксис похож на GRANT:

REVOKE привилегии ON база_данных . таблица FROM ' имя_пользователя ' @ ' хост ' ;

Например, заберём все права на базу данных test_database у нашего пользователя:

REVOKE ALL PRIVILEGES ON test_database . * FROM 'test_user'@'localhost';


4. Создание суперпользователя MySQL

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

GRANT ALL PRIVILEGES ON * . * TO 'test_user'@'localhost';

GRANT ALL PRIVILEGES ON * . * TO 'test_user'@'localhost' WITH GRANT OPTION;

Теперь этот пользователь является суперпользователем для MySQL и, авторизовавшись от его имени в PhpMyAdmin, вы можете делать всё то же самое, что и с помощью root.

Выводы

В этой статье мы рассмотрели, как создать пользователя MySQL в Ubuntu или в любом другом дистрибутиве. Работа в командной строке с MySQL может показаться довольно сложной. Но сделать это надо всего один раз -после установки базы данных. А дальше можно выполнять все действия в Phpmyadmin.

Нет похожих записей


Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.

Как Создать Пользователя MySQL и Настроить Права Доступа

Хотите понять основы MySQL? Читайте дальше, так как эта статья раскрывает одну из базовых тем, а именно как создать пользователя в MySQL. Кроме этого мы покажем несколько команд, с помощью которых можно предоставить и отозвать привилегии, а также удалить существующих пользователей.

Получите скидку до 77% на пакеты VPS-хостинга.

Прежде чем мы перейдём к следующему разделу руководства, убедитесь, что вы установили MySQL. У нас есть отличные учебные пособия о том, как установить БД на Ubuntu и CentOS.

ОБРАТИТЕ ВНИМАНИЕ. Мы будем использовать командную строку, чтобы подключиться к нашему Linux VPS как root-пользователь. Вы можете использовать PuTTY (Windows) или свой терминал (macOS, Linux) и войти в систему, используя данные своего root-доступа SSH, предоставленные вашим хостинг-провайдером.

Создайте Учётную Запись Пользователя MySQL и Предоставьте Неограниченные Права Доступа

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

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

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

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

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

Чтобы создать новую учётную запись пользователя в MySQL, выполните следующие действия:

  1. Запустите командную строку и из неё сервер MySQL:
  2. Сценарий вернёт следующий результат, подтверждающий, что вы обращаетесь к серверу MySQL.
  3. Затем выполните следующую команду:
  4. novyi_polzovatel — это имя, которое мы дали нашей новой учётной записи, а часть IDENTIFIED BY‘parol’ устанавливает пароль для этого пользователя. Вы можете заменить значения внутри кавычек.
  5. Чтобы назначить созданном пользователю неограниченные права доступа к базе данных, выполните следующую команду:
  6. Для того, чтоб изменения вступили в силу запустите команду обновления:

Это всё. Ваш новый пользователь получил те же права доступа в базе данных, что и пользователь root.

Назначьте Специальные Права Доступа для Пользователя MySQL

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

Кроме того, замените значение ТИП_ПРАВ типом доступа, который вы хотите предоставить своему новому пользователю.

В MySQL есть несколько типов прав доступа, некоторые из них описаны ниже:

  • CREATE — Позволяет пользователям создавать базы данных/таблицы
  • SELECT — Разрешает делать выборку данных
  • INSERT — Право добавлять новые записи в таблицы
  • UPDATE — Позволяет изменять существующие записи в таблицах
  • DELETE — Даёт право удалять записи из таблиц
  • DROP — Возможность удалять записи в базе данных/таблицах

ОБРАТИТЕ ВНИМАНИЕ. Тип прав ALL PRIVILEGES даёт все перечисленные выше разрешения.

Для использования любой из этих опций, просто замените ТИП_ПРАВ необходимым разрешением. Чтобы назначить несколько видов прав доступа, разделите их запятыми как в следующей команде. Например, мы можем назначить привилегии CREATE и SELECT нашему пользователю MySQL без полномочий root следующей командой:

Иногда вы можете столкнуться с ситуацией, когда вам нужно отменить определенные привилегии пользователя. Сделать это можно, выполнив следующую команду:

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

Наконец, вы можете полностью удалить существующую учётную запись пользователя, используя команду:

ОБРАТИТЕ ВНИМАНИЕ. Для запуска любой из этих команд вам необходим root-доступ. Также, обязательно выполняйте FLUSH PRIVILEGES; Команда после внесения изменений.

Просмотр Прав Доступа Пользователя MySQL

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

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

Что Такое База Данных MySQL?

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

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

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

MySQL — одна из самых популярных систем управления базами данных. Её популярность объясняется простотой использования и поддержкой огромного сообщества. Даже такие платформы, как Facebook и Twitter, в некоторой степени используют MySQL.

Заключение

База данных является неотъемлемой частью каждого сайта и веб-приложения, поскольку она хранит все данные пользователей. Для более эффективного управления и связи с БД вам понадобится система управления базами данных. Мы рекомендуем использовать MySQL, надёжный и простой вариант.

В этом руководстве вы узнали несколько основных команд для работы в MySQL, в том числе КАК:

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

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

Елена имеет профессиональное техническое образование в области информационных технологий и опыт программирования на разных языках под разные платформы и системы. Более 10 лет посвятила сфере веб, работая с разными CMS, такими как: Drupal, Joomla, Magento и конечно же наиболее популярной в наши дни системой управления контентом – WordPress. Её статьи всегда технически выверены и точны, будь то обзор для WordPress или инструкции по настройке вашего VPS сервера.

Отозвать привилегию можно с помощью выражения REVOKE. Чтобы вывести список присвоенных привилегий, воспользуйтесь выражением SHOW GRANTS.

Синтаксис присвоения привилегий

  • privilege — Тип привилегии
  • role — Роль пользователя ClickHouse.
  • user — Пользователь ClickHouse.

WITH GRANT OPTION разрешает пользователю или роли выполнять запрос GRANT . Пользователь может выдавать только те привилегии, которые есть у него, той же или меньшей области действий.
WITH REPLACE OPTION заменяет все старые привилегии новыми привилегиями для user или role , если не указано, добавляет новые привилегии.

Синтаксис назначения ролей

  • role — Роль пользователя ClickHouse.
  • user — Пользователь ClickHouse.

WITH ADMIN OPTION присваивает привилегию ADMIN OPTION пользователю или роли.
WITH REPLACE OPTION заменяет все старые роли новыми ролями для пользователя user или role , если не указано, добавляет новые новые роли.

Использование

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

Например, администратор выдал привилегию пользователю john :

Это означает, что пользователю john разрешено выполнять:

  • SELECT x,y FROM db.table .
  • SELECT x FROM db.table .
  • SELECT y FROM db.table .

john не может выполнить SELECT z FROM db.table или SELECT * FROM db.table . После обработки данных запросов ClickHouse ничего не вернет — даже x или y . Единственное исключение — если таблица содержит только столбцы x и y . В таком случае ClickHouse вернет все данные.

Также у john есть привилегия GRANT OPTION . john может выдать другим пользователям привилегии той же или меньшей области действий из тех, которые есть у него.

При присвоении привилегий допускается использовать астериск ( * ) вместо имени таблицы или базы данных. Например, запрос GRANT SELECT ON db.* TO john позволит пользователю john выполнять SELECT над всеми таблицам в базе данных db . Также вы можете опускать имя базы данных. В таком случае привилегии позволят совершать операции над текущей базой данных. Например, запрос GRANT SELECT ON * TO john выдаст привилегию на выполнение SELECT над всеми таблицами в текущей базе данных; GRANT SELECT ON mytable TO john — только над таблицей mytable в текущей базе данных.

Доступ к базе данных system разрешен всегда (данная база данных используется при обработке запросов).

Вы можете присвоить несколько привилегий нескольким пользователям в одном запросе. Запрос GRANT SELECT, INSERT ON *.* TO john, robin позволит пользователям john и robin выполнять INSERT и SELECT над всеми таблицами всех баз данных на сервере.

Привилегии

Привилегия — это разрешение на выполнение определенного типа запросов.

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

  • ALTER TABLE
    • ALTER UPDATE
    • ALTER DELETE
    • ALTER COLUMN
      • ALTER ADD COLUMN
      • ALTER DROP COLUMN
      • ALTER MODIFY COLUMN
      • ALTER COMMENT COLUMN
      • ALTER CLEAR COLUMN
      • ALTER RENAME COLUMN
      • ALTER ORDER BY
      • ALTER SAMPLE BY
      • ALTER ADD INDEX
      • ALTER DROP INDEX
      • ALTER MATERIALIZE INDEX
      • ALTER CLEAR INDEX
      • ALTER ADD CONSTRAINT
      • ALTER DROP CONSTRAINT
      • ALTER MATERIALIZE TTL
      • ALTER VIEW REFRESH
      • ALTER VIEW MODIFY QUERY
      • CREATE DATABASE
      • CREATE TABLE
        • CREATE TEMPORARY TABLE
        • DROP DATABASE
        • DROP TABLE
        • DROP VIEW
        • DROP DICTIONARY
        • DROP FUNCTION
        • SHOW DATABASES
        • SHOW TABLES
        • SHOW COLUMNS
        • SHOW DICTIONARIES
        • CREATE USER
        • ALTER USER
        • DROP USER
        • CREATE ROLE
        • ALTER ROLE
        • DROP ROLE
        • CREATE ROW POLICY
        • ALTER ROW POLICY
        • DROP ROW POLICY
        • CREATE QUOTA
        • ALTER QUOTA
        • DROP QUOTA
        • CREATE SETTINGS PROFILE
        • ALTER SETTINGS PROFILE
        • DROP SETTINGS PROFILE
        • SHOW ACCESS
          • SHOW_USERS
          • SHOW_ROLES
          • SHOW_ROW_POLICIES
          • SHOW_QUOTAS
          • SHOW_SETTINGS_PROFILES
          • SYSTEM SHUTDOWN
          • SYSTEM DROP CACHE
            • SYSTEM DROP DNS CACHE
            • SYSTEM DROP MARK CACHE
            • SYSTEM DROP UNCOMPRESSED CACHE
            • SYSTEM RELOAD CONFIG
            • SYSTEM RELOAD DICTIONARY
              • SYSTEM RELOAD EMBEDDED DICTIONARIES
              • SYSTEM DISTRIBUTED SENDS
              • SYSTEM REPLICATED SENDS
              • SYSTEM FLUSH DISTRIBUTED
              • SYSTEM FLUSH LOGS
              • addressToLine
              • addressToSymbol
              • demangle
              • FILE
              • URL
              • REMOTE
              • MYSQL
              • ODBC
              • JDBC
              • HDFS
              • S3

              Примеры того, как трактуется данная иерархия:

              • Привилегия ALTER включает все остальные ALTER* привилегии.
              • ALTER CONSTRAINT включает ALTER ADD CONSTRAINT и ALTER DROP CONSTRAINT .

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

              Уровни (от низшего к высшему):

              • COLUMN — Привилегия присваивается для столбца, таблицы, базы данных или глобально.
              • TABLE — Привилегия присваивается для таблицы, базы данных или глобально.
              • VIEW — Привилегия присваивается для представления, базы данных или глобально.
              • DICTIONARY — Привилегия присваивается для словаря, базы данных или глобально.
              • DATABASE — Привилегия присваивается для базы данных или глобально.
              • GLOBAL — Привилегия присваивается только глобально.
              • GROUP — Группирует привилегии разных уровней. При присвоении привилегии уровня GROUP присваиваются только привилегии из группы в соответствии с используемым синтаксисом.

              Примеры допустимого синтаксиса:

              • GRANT SELECT(x) ON db.table TO user
              • GRANT SELECT ON db.* TO user

              Примеры недопустимого синтаксиса:

              • GRANT CREATE USER(x) ON db.table TO user
              • GRANT CREATE USER ON db.* TO user

              Специальная привилегия ALL присваивает все привилегии пользователю или роли.

              По умолчанию пользователь или роль не имеют привилегий.

              Отсутствие привилегий у пользователя или роли отображается как привилегия NONE.

              Выполнение некоторых запросов требует определенного набора привилегий. Например, чтобы выполнить запрос RENAME, нужны следующие привилегии: SELECT , CREATE TABLE , INSERT и DROP TABLE .

              SELECT

              Разрешает выполнять запросы SELECT.

              Описание

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

              Рассмотрим следующую привилегию:

              Данная привилегия позволяет пользователю john выполнять выборку данных из столбцов x и/или y в db.table , например, SELECT x FROM db.table . john не может выполнить SELECT z FROM db.table или SELECT * FROM db.table . После обработки данных запросов ClickHouse ничего не вернет — даже x или y . Единственное исключение — если таблица содержит только столбцы x и y . В таком случае ClickHouse вернет все данные.

              INSERT

              Разрешает выполнять запросы INSERT.

              Описание

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

              Пример

              Присвоенная привилегия позволит пользователю john вставить данные в столбцы x и/или y в db.table .

              ALTER

              Разрешает выполнять запросы ALTER в соответствии со следующей иерархией привилегий:

              • ALTER . Уровень: COLUMN .
                • ALTER TABLE . Уровень: GROUP
                  • ALTER UPDATE . Уровень: COLUMN . Алиасы: UPDATE
                  • ALTER DELETE . Уровень: COLUMN . Алиасы: DELETE
                  • ALTER COLUMN . Уровень: GROUP
                    • ALTER ADD COLUMN . Уровень: COLUMN . Алиасы: ADD COLUMN
                    • ALTER DROP COLUMN . Уровень: COLUMN . Алиасы: DROP COLUMN
                    • ALTER MODIFY COLUMN . Уровень: COLUMN . Алиасы: MODIFY COLUMN
                    • ALTER COMMENT COLUMN . Уровень: COLUMN . Алиасы: COMMENT COLUMN
                    • ALTER CLEAR COLUMN . Уровень: COLUMN . Алиасы: CLEAR COLUMN
                    • ALTER RENAME COLUMN . Уровень: COLUMN . Алиасы: RENAME COLUMN
                    • ALTER ORDER BY . Уровень: TABLE . Алиасы: ALTER MODIFY ORDER BY , MODIFY ORDER BY
                    • ALTER SAMPLE BY . Уровень: TABLE . Алиасы: ALTER MODIFY SAMPLE BY , MODIFY SAMPLE BY
                    • ALTER ADD INDEX . Уровень: TABLE . Алиасы: ADD INDEX
                    • ALTER DROP INDEX . Уровень: TABLE . Алиасы: DROP INDEX
                    • ALTER MATERIALIZE INDEX . Уровень: TABLE . Алиасы: MATERIALIZE INDEX
                    • ALTER CLEAR INDEX . Уровень: TABLE . Алиасы: CLEAR INDEX
                    • ALTER ADD CONSTRAINT . Уровень: TABLE . Алиасы: ADD CONSTRAINT
                    • ALTER DROP CONSTRAINT . Уровень: TABLE . Алиасы: DROP CONSTRAINT
                    • ALTER MATERIALIZE TTL . Уровень: TABLE . Алиасы: MATERIALIZE TTL
                    • ALTER VIEW REFRESH . Уровень: VIEW . Алиасы: ALTER LIVE VIEW REFRESH , REFRESH VIEW
                    • ALTER VIEW MODIFY QUERY . Уровень: VIEW . Алиасы: ALTER TABLE MODIFY QUERY

                    Примеры того, как трактуется данная иерархия:

                    • Привилегия ALTER включает все остальные ALTER* привилегии.
                    • ALTER CONSTRAINT включает ALTER ADD CONSTRAINT и ALTER DROP CONSTRAINT .

                    Дополнительно

                    • Привилегия MODIFY SETTING позволяет изменять настройки движков таблиц. Не влияет на настройки или конфигурационные параметры сервера.
                    • Операция ATTACH требует наличие привилегии CREATE.
                    • Операция DETACH требует наличие привилегии DROP.
                    • Для остановки мутации с помощью KILL MUTATION, необходима привилегия на выполнение данной мутации. Например, чтобы остановить запрос ALTER UPDATE , необходима одна из привилегий: ALTER UPDATE , ALTER TABLE или ALTER .

                    CREATE

                    Разрешает выполнять DDL-запросы CREATE и ATTACH в соответствии со следующей иерархией привилегий:

                    • CREATE . Уровень: GROUP
                      • CREATE DATABASE . Уровень: DATABASE
                      • CREATE TABLE . Уровень: TABLE
                        • CREATE TEMPORARY TABLE . Уровень: GLOBAL

                        Дополнительно

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

                        Разрешает выполнять запросы DROP и DETACH в соответствии со следующей иерархией привилегий:

                        • DROP . Уровень: GROUP
                          • DROP DATABASE . Уровень: DATABASE
                          • DROP TABLE . Уровень: TABLE
                          • DROP VIEW . Уровень: VIEW
                          • DROP DICTIONARY . Уровень: DICTIONARY

                          TRUNCATE

                          Разрешает выполнять запросы TRUNCATE.

                          OPTIMIZE

                          Разрешает выполнять запросы OPTIMIZE TABLE.

                          Разрешает выполнять запросы SHOW , DESCRIBE , USE и EXISTS в соответствии со следующей иерархией привилегий:

                          Дополнительно

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

                          KILL QUERY

                          Разрешает выполнять запросы KILL в соответствии со следующей иерархией привилегий:

                          Дополнительно

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

                          ACCESS MANAGEMENT

                          Разрешает пользователю выполнять запросы на управление пользователями, ролями и политиками доступа к строкам.

                          • ACCESS MANAGEMENT . Уровень: GROUP
                            • CREATE USER . Уровень: GLOBAL
                            • ALTER USER . Уровень: GLOBAL
                            • DROP USER . Уровень: GLOBAL
                            • CREATE ROLE . Уровень: GLOBAL
                            • ALTER ROLE . Уровень: GLOBAL
                            • DROP ROLE . Уровень: GLOBAL
                            • ROLE ADMIN . Уровень: GLOBAL
                            • CREATE ROW POLICY . Уровень: GLOBAL . Алиасы: CREATE POLICY
                            • ALTER ROW POLICY . Уровень: GLOBAL . Алиасы: ALTER POLICY
                            • DROP ROW POLICY . Уровень: GLOBAL . Алиасы: DROP POLICY
                            • CREATE QUOTA . Уровень: GLOBAL
                            • ALTER QUOTA . Уровень: GLOBAL
                            • DROP QUOTA . Уровень: GLOBAL
                            • CREATE SETTINGS PROFILE . Уровень: GLOBAL . Алиасы: CREATE PROFILE
                            • ALTER SETTINGS PROFILE . Уровень: GLOBAL . Алиасы: ALTER PROFILE
                            • DROP SETTINGS PROFILE . Уровень: GLOBAL . Алиасы: DROP PROFILE
                            • SHOW ACCESS . Уровень: GROUP
                              • SHOW_USERS . Уровень: GLOBAL . Алиасы: SHOW CREATE USER
                              • SHOW_ROLES . Уровень: GLOBAL . Алиасы: SHOW CREATE ROLE
                              • SHOW_ROW_POLICIES . Уровень: GLOBAL . Алиасы: SHOW POLICIES , SHOW CREATE ROW POLICY , SHOW CREATE POLICY
                              • SHOW_QUOTAS . Уровень: GLOBAL . Алиасы: SHOW CREATE QUOTA
                              • SHOW_SETTINGS_PROFILES . Уровень: GLOBAL . Алиасы: SHOW PROFILES , SHOW CREATE SETTINGS PROFILE , SHOW CREATE PROFILE

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

                              SYSTEM

                              Разрешает выполнять запросы SYSTEM в соответствии со следующей иерархией привилегий:

                              • SYSTEM . Уровень: GROUP
                                • SYSTEM SHUTDOWN . Уровень: GLOBAL . Алиасы: SYSTEM KILL , SHUTDOWN
                                • SYSTEM DROP CACHE . Алиасы: DROP CACHE
                                  • SYSTEM DROP DNS CACHE . Уровень: GLOBAL . Алиасы: SYSTEM DROP DNS , DROP DNS CACHE , DROP DNS
                                  • SYSTEM DROP MARK CACHE . Уровень: GLOBAL . Алиасы: SYSTEM DROP MARK , DROP MARK CACHE , DROP MARKS
                                  • SYSTEM DROP UNCOMPRESSED CACHE . Уровень: GLOBAL . Алиасы: SYSTEM DROP UNCOMPRESSED , DROP UNCOMPRESSED CACHE , DROP UNCOMPRESSED
                                  • SYSTEM RELOAD CONFIG . Уровень: GLOBAL . Алиасы: RELOAD CONFIG
                                  • SYSTEM RELOAD DICTIONARY . Уровень: GLOBAL . Алиасы: SYSTEM RELOAD DICTIONARIES , RELOAD DICTIONARY , RELOAD DICTIONARIES
                                    • SYSTEM RELOAD EMBEDDED DICTIONARIES . Уровень: GLOBAL . Алиасы: RELOAD EMBEDDED DICTIONARIES
                                    • SYSTEM DISTRIBUTED SENDS . Уровень: TABLE . Алиасы: SYSTEM STOP DISTRIBUTED SENDS , SYSTEM START DISTRIBUTED SENDS , STOP DISTRIBUTED SENDS , START DISTRIBUTED SENDS
                                    • SYSTEM REPLICATED SENDS . Уровень: TABLE . Алиасы: SYSTEM STOP REPLICATED SENDS , SYSTEM START REPLICATED SENDS , STOP REPLICATED SENDS , START REPLICATED SENDS
                                    • SYSTEM FLUSH DISTRIBUTED . Уровень: TABLE . Алиасы: FLUSH DISTRIBUTED
                                    • SYSTEM FLUSH LOGS . Уровень: GLOBAL . Алиасы: FLUSH LOGS

                                    Привилегия SYSTEM RELOAD EMBEDDED DICTIONARIES имплицитно присваивается привилегией SYSTEM RELOAD DICTIONARY ON *.* .

                                    INTROSPECTION

                                    Разрешает использовать функции интроспекции.

                                    • INTROSPECTION . Уровень: GROUP . Алиасы: INTROSPECTION FUNCTIONS
                                      • addressToLine . Уровень: GLOBAL
                                      • addressToSymbol . Уровень: GLOBAL
                                      • demangle . Уровень: GLOBAL

                                      SOURCES

                                      Разрешает использовать внешние источники данных. Применяется к движкам таблиц и табличным функциям.