Создание нового пользователя и настройка прав доступа в MySQL
Описание процедуры назначения прав для пользователей MySQL
При работе с выделенным сервером или VPS одной из ключевых задач является организация хранения и управления данными. MySQL — это система управления базами данных, которая позволяет эффективно структурировать информацию и контролировать доступ пользователей. Она подходит как для небольших проектов, так и для более масштабных задач, обеспечивая безопасность, надежность и удобство в работе.
Базы данных MySQL
Базы данных MySQL представляют собой сущность для хранения информации в виде таблиц. Чтобы данные других баз не были доступны каждому пользователю сервера, MySQL использует систему пользователей. Доступ к базе данных может быть предоставлен администратором или уполномоченным пользователем другому пользователю, причем права могут быть полными или ограниченными.
Все данные хранятся в логически связанных таблицах, к которым доступ осуществляется с помощью языка запросов SQL. MySQL является свободно распространяемой системой, поэтому использовать её можно бесплатно. Кроме того, это достаточно быстрая, надежная и простая в использовании СУБД, подходящая для большинства проектов средней сложности.
Права пользователей MySQL
В MySQL существует множество привилегий, определяющих, какие действия пользователь может выполнять с базами данных и таблицами. Ниже приведены основные привилегии:
CREATE — позволяет создавать новые базы данных и таблицы.
DROP — позволяет удалять базы данных или таблицы.
INSERT — разрешает добавление строк в таблицы.
UPDATE — позволяет изменять содержимое строк таблиц. Не путать с ALTER, которая изменяет структуру таблиц (например, количество столбцов или их типы).
DELETE — разрешает удалять строки из таблицы.
ALTER — позволяет изменять структуру таблиц; требует привилегий CREATE и INSERT.
SELECT — позволяет читать таблицы, выполняя выборку данных по столбцам и различным условиям.
GRANT OPTION — разрешает назначать или отзывать права других пользователей, но только те, которыми сам владелец прав располагает.
LOCK TABLES — блокирует таблицу на время внесения изменений, чтобы данные не изменялись в этот период.
REFERENCES — позволяет создавать связи между таблицами с использованием внешних ключей.
EVENT — предоставляет право создавать, изменять или удалять задания планировщика.
TRIGGER — разрешает создавать, изменять и удалять триггеры, которые выполняются при операциях DELETE, UPDATE или INSERT.
INDEX — позволяет создавать и удалять индексы для ускорения поиска данных.
CREATE TEMPORARY TABLES — разрешает создавать временные таблицы на время сессии.
CREATE VIEW — позволяет создавать представления таблиц, которые собирают данные из других таблиц, не создавая отдельной физической таблицы.
SHOW VIEW — позволяет просмотреть SQL-запрос, на основании которого создано представление.
CREATE ROUTINE — разрешает создавать процедуры, представляющие собой набор SQL-команд.
ALTER ROUTINE — позволяет изменять созданные процедуры.
EXECUTE — разрешает выполнение готовых процедур.
FILE — предоставляет доступ к файлам на сервере, которые доступны системе MySQL, и возможность создавать файлы в директориях с правами записи MySQL.
Привилегии административного уровня:
CREATE TABLESPACE (admin) — создание, изменение и удаление логических пространств таблиц для оптимизации хранения данных.
CREATE USER (admin) — создание, изменение и удаление пользователей MySQL.
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) — просмотр всех баз данных на сервере.
SHUTDOWN (admin) — позволяет завершать работу MySQL сервера.
SUPER (admin) — даёт множество прав, включая завершение процессов других пользователей, изменение глобальных системных переменных, управление логированием и репликацией.
ALL (admin) — предоставляет все доступные привилегии, кроме GRANT OPTION.
Создание и управление пользователями MySQL
Создание нового пользователя:
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
По умолчанию пользователь newuser не имеет прав на работу с базами данных.
Назначение всех привилегий пользователю:
GRANT ALL PRIVILEGES ON _._ TO 'newuser'@'localhost';
Звездочки обозначают все базы данных и таблицы. Эта команда позволяет пользователю полностью управлять всеми базами и таблицами.
После изменения прав необходимо обновить их:
FLUSH PRIVILEGES;
Пример назначения конкретных прав:
GRANT [тип прав] ON [название базы].[название таблицы] TO '[имя пользователя]'@'localhost';
Для всех баз и таблиц используйте звездочку (*).
Лишение прав пользователя:
REVOKE [тип прав] ON [название базы].[название таблицы] FROM '[имя пользователя]'@'localhost';
Удаление пользователя:
DROP USER 'demo'@'localhost';
Для проверки учетной записи: выйдите из MySQL:
quit
и зайдите снова под новым пользователем:
mysql -u [имя пользователя] -p