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

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

  • автор:

Sorry, you have been blocked

This website is using a security service to protect itself from online attacks. The action you just performed triggered the security solution. There are several actions that could trigger this block including submitting a certain word or phrase, a SQL command or malformed data.

What can I do to resolve this?

You can email the site owner to let them know you were blocked. Please include what you were doing when this page came up and the Cloudflare Ray ID found at the bottom of this page.

Cloudflare Ray ID: 7cc36ede7fd72d8b • Your IP: Click to reveal 88.135.219.175 • Performance & security by Cloudflare

Grant/Revoke привилегии MySQL

Вы можете использовать привилегии GRANT и REVOKE для различных объектов базы данных в MySQL. Затем вы можете просмотреть привилегии, назначенные пользователю, используя команду SHOW GRANTS. Мы рассмотрим, как предоставлять и отменять привилегии для таблиц, функций и процедур в MySQL.

Grant привилегии на таблицу

Вы можете предоставить пользователям различные привилегии для таблиц. Эти разрешения могут быть любой комбинацией SELECT, INSERT, UPDATE, DELETE, INDEX, CREATE, ALTER, DROP, GRANT OPTION или ALL.

Синтаксис

Синтаксис предоставления привилегий для таблицы в MySQL:

privileges — это может быть любое из следующих значений:

Привилегии Описание
SELECT Возможность выполнения операторов SELECT для таблицы.
INSERT Возможность выполнения операторов INSERT для таблицы.
UPDATE Возможность выполнения операторов UPDATE для таблицы.
DELETE Возможность выполнения операторов DELETE для таблицы.
INDEX Возможность создания индекса в существующей таблице.
CREATE Возможность выполнять оператор CREATE TABLE.
ALTER Возможность выполнять оператор ALTER TABLE для изменения определения таблицы.
DROP Возможность выполнения операторов DROP TABLE.
GRANT OPTION Позволяет предоставлять права, которыми вы обладаете для других пользователей.
ALL Предоставляет все разрешения, кроме GRANT OPTION.

object — имя объекта базы данных, для которого вы предоставляете разрешения. В случае предоставления привилегий в таблице это будет имя таблицы.
user — имя пользователя, которому будут предоставлены эти привилегии.

Пример

Рассмотрим некоторые примеры предоставления привилегий на таблицу в MySQL.
Например, если вы хотите предоставить привилегии SELECT, INSERT, UPDATE и DELETE в таблице contacts , с именем пользователя adam, вы должны запустить следующий оператор GRANT:

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

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

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

Что означает выделенный текст

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

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

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

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

Примечание: при добавлении пользователей в оболочке MySQL в данном руководстве мы будем в качестве хоста пользователя использовать localhost , а не IP-адрес сервера. localhost — это имя хоста, которое означает «этот компьютер», и MySQL работает с этим именем хоста особенным образом: когда пользователь на данном хосте выполняет вход в MySQL, СУБД будет пытаться подключиться к локальному серверу, используя файл сокета Unix. Таким образом, localhost обычно используется, если вы планируете подключение к вашему серверу через SSH или если вы запускаете локальный клиент mysql для подключения к локальному серверу MySQL.

В данный момент newuser не имеет прав на выполнение каких-либо действий с базами данных. Фактически, даже если newuser попытается выполнить вход (с помощью пароля password ), он не сможет получить доступ к оболочке MySQL.

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

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

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

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

После этого внесенные вами изменения вступят в силу.

Предоставление пользователю различных прав

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

  • ALL PRIVILEGES — как мы уже увидели ранее, данный набор прав предоставляет пользователю MySQL полный доступ к определенной базе данных (если не выбрана ни одна база данных, предоставляется глобальный доступ к системе)
  • CREATE — позволяет пользователю создавать новые таблицы или базы данных
  • DROP — позволяет пользователю удалять таблицы или базы данных
  • DELETE — позволяет пользователю удалять строки из таблиц
  • INSERT — позволяет пользователю вставлять строки в таблицы
  • SELECT — позволяет пользователю выполнять команду SELECT для чтения данных из базы
  • UPDATE — позволяет пользователю обновлять строки таблицы
  • GRANT OPTION — позволяет пользователю предоставлять или отзывать права других пользователей

Чтобы предоставить конкретному пользователю какое-либо право, вы можете использовать следующую структуру команды:

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

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

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

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

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

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

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

а затем войдите снова, введя следующую команду в терминале:

Заключение

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

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

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

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

После того, как вы установили и настроили 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’;

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

SELECT User,Host FROM mysql.user;

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

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’;

Даём все привилегии для пользователя test_user над всеми базами данными и всеми таблицами. Но наш пользователь не сможет давать права другим пользователям. Чтобы это исправить, нужно дать ему привилегию GRANT, а для этого используется такая команда:

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

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

Выводы

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

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

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

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