Table of Contents
URL: https://www.progressiverobot.com/mysql-ru/
Введение
MySQL — это программное обеспечение для управления базами данных с открытым исходным кодом, которое помогает пользователям хранить, организовывать и в будущем получать данные. MySQL обладает множеством возможностей предоставления конкретным пользователям детализированных прав для работы с таблицами и базами данных. В этом руководстве мы кратко расскажем о ряде из этих возможностей.
Что означает <^>выделенный текст<^>
В этом руководстве любые строки, которые пользователь должен ввести или изменить, будут <^>выделены цветом<^>! Весь остальной текст можно просто скопировать и вставить.
Создание нового пользователя
В части 1 руководства по работе с MySQL мы воспользовались всеми возможностями для редактирования в MySQL с помощью пользователя с правами root, обладающего полным доступом ко всем базам данных. Однако для тех случаев, когда нам могут потребоваться дополнительные ограничения, существует возможность создания пользователей с настраиваемыми правами.
Давайте начнем с создания нового пользователя внутри оболочки MySQL:
CREATE USER '<^>newuser<^>'@'localhost' IDENTIFIED BY '<^>password<^>';
Примечание: при добавлении пользователей в оболочке MySQL в данном руководстве мы будем в качестве хоста пользователя использовать localhost, а не IP-адрес сервера. localhost — это имя хоста, которое означает «этот компьютер», и MySQL работает с этим именем хоста особенным образом: когда пользователь на данном хосте выполняет вход в MySQL, СУБД будет пытаться подключиться к локальному серверу, используя файл сокета Unix. Таким образом, localhost обычно используется, если вы планируете подключение к вашему серверу через SSH или если вы запускаете локальный клиент mysql для подключения к локальному серверу MySQL.
В данный момент <^>newuser<^> не имеет прав на выполнение каких-либо действий с базами данных. Фактически, даже если <^>newuser<^> попытается выполнить вход (с помощью пароля <^>password<^>), он не сможет получить доступ к оболочке MySQL.
Таким образом, первое, что необходимо сделать, — это предоставить пользователю доступ к необходимой ему информации.
GRANT ALL PRIVILEGES ON * . * TO '<^>newuser<^>'@'localhost';
Звездочки в этой команде обозначают базу данных и таблицу (соответственно), к которым пользователь может получить доступ. Эта конкретная команда позволяет пользователю читать, редактировать, запускать и выполнять любые задачи для всех баз данных и таблиц.
Обратите внимание, что в этом примере мы предоставляем <^>newuser<^> полный корневой доступ ко всему содержанию нашей базы данных. Хотя это может быть полезно для объяснения некоторых концепций MySQL, в большинстве случаев это может быть нецелесообразно и может отрицательно сказаться на безопасности вашей базы данных.
После того как вы определились с правами, которые вы хотите предоставить вашему новому пользователю, необходимо будет во всех случаях перезагрузить все привилегии.
FLUSH PRIVILEGES;
После этого внесенные вами изменения вступят в силу.
Предоставление пользователю различных прав
Ниже представлен короткий список других часто используемых прав, которые могут предоставляться пользователям.
- ALL PRIVILEGES — как мы уже увидели ранее, данный набор прав предоставляет пользователю MySQL полный доступ к определенной базе данных (если не выбрана ни одна база данных, предоставляется глобальный доступ к системе)
- CREATE — позволяет пользователю создавать новые таблицы или базы данных
- DROP — позволяет пользователю удалять таблицы или базы данных
- DELETE — позволяет пользователю удалять строки из таблиц
- INSERT — позволяет пользователю вставлять строки в таблицы
- SELECT — позволяет пользователю выполнять команду
SELECTдля чтения данных из базы
- UPDATE — позволяет пользователю обновлять строки таблицы
- GRANT OPTION — позволяет пользователю предоставлять или отзывать права других пользователей
Чтобы предоставить конкретному пользователю какое-либо право, вы можете использовать следующую структуру команды:
GRANT <^>type_of_permission<^> ON <^>database_name<^>.<^>table_name<^> TO '<^>username<^>'@'localhost';
Если вы хотите предоставить пользователю доступ к любой базе данных или любой таблице, необходимо поместить звездочку (*) на место имени базы данных или имени таблицы.
При каждом обновлении или изменении права необходимо использовать команду сброса привилегий.
Если вам требуется отозвать какое-либо право, структура команды будет практически идентична структуре команды, используемой для предоставления права:
REVOKE <^>type_of_permission<^> ON <^>database_name<^>.<^>table_name<^> FROM '<^>username<^>'@'localhost';
Обратите внимание, что при отзыве прав синтаксис требует использования элемента FROM вместо элемента TO, который мы использовали при предоставлении прав.
Вы можете просмотреть текущие права пользователя с помощью следующей команды:
SHOW GRANTS FOR '<^>username<^>'@'localhost';
Так же как вы можете удалять базы данных с помощью DROP, вы можете использовать DROP для полного удаления пользователя:
DROP USER '<^>username<^>'@'localhost';
Чтобы протестировать вашего нового пользователя, выполните выход, введя следующую команду:
quit
а затем войдите снова, введя следующую команду в терминале:
mysql -u [username] -p
Заключение
После прохождения этого руководства у вас должно появиться понимание того, как добавлять новых пользователей и предоставлять им различные права для работы с базой данных MySQL. Теперь вы можете продолжать изучение и эксперименты с различными конфигурациями прав для вашей базы данных или узнать больше о некоторых продвинутых конфигурациях MySQL.
Если вы хотите узнать больше об основах работы с MySQL, мы рекомендуем вам ознакомиться со следующими обучающими материалами: