Перейти к содержанию

Введение

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

Для этого в СУБД используются пользователи и система прав доступа.

Создание пользователей позволяет: - контролировать доступ к базе данных; - разграничивать права пользователей; - обеспечивать безопасность данных; - отслеживать действия пользователей.

В MariaDB и MySQL управление пользователями выполняется с помощью специальных SQL-команд.


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

Пользователь базы данных — это учётная запись, которая имеет: - имя пользователя; - пароль; - набор прав доступа к базе данных.

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

Формат пользователя в MariaDB:

'имя_пользователя'@'хост'

Примеры:

'admin'@'localhost'
'user1'@'%'

Где: - localhost — подключение только с этого компьютера; - % — подключение с любого компьютера.


Команда CREATE USER

Пользователь создаётся с помощью команды CREATE USER.

Общий синтаксис

CREATE USER 'username'@'host'
IDENTIFIED BY 'password';

Пример

CREATE USER 'student'@'localhost'
IDENTIFIED BY '123456';

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


Просмотр пользователей

Список пользователей хранится в системной таблице mysql.user.

Пример запроса:

SELECT user, host
FROM mysql.user;

Этот запрос покажет всех пользователей сервера.


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

Пароль можно изменить командой:

ALTER USER 'student'@'localhost'
IDENTIFIED BY 'new_password';

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

Если пользователь больше не нужен, его можно удалить.

DROP USER 'student'@'localhost';

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


Назначение прав доступа (GRANT)

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

Для этого используется команда GRANT.

Общий синтаксис

GRANT права
ON база.таблица
TO 'user'@'host';

Основные права

Право Описание
SELECT чтение данных
INSERT добавление данных
UPDATE изменение данных
DELETE удаление данных
CREATE создание таблиц
DROP удаление таблиц
ALTER изменение структуры таблиц
ALL PRIVILEGES все права

Пример

Выдать право чтения данных:

GRANT SELECT
ON college.*
TO 'student'@'localhost';

Это позволит пользователю читать данные во всех таблицах базы college.

Выдача нескольких прав

Можно выдать сразу несколько прав.

GRANT SELECT, INSERT, UPDATE
ON college.*
TO 'student'@'localhost';

Выдача прав на конкретную таблицу

GRANT SELECT
ON college.students
TO 'student'@'localhost';

В этом случае пользователь сможет читать только таблицу students.


Удаление прав доступа (REVOKE)

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

Общий синтаксис

REVOKE права  
ON база.таблица  
FROM 'user'@'host';

Пример удаления одного права

REVOKE INSERT  
ON college.*  
FROM 'student'@'localhost';

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

Пример удаления нескольких прав

REVOKE INSERT, UPDATE  
ON college.*  
FROM 'student'@'localhost';

В этом случае у пользователя будут отозваны сразу два права: на добавление и изменение данных.

Пример удаления прав на конкретную таблицу

REVOKE SELECT  
ON college.students  
FROM 'student'@'localhost';

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


Обновление прав (FLUSH PRIVILEGES)

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

FLUSH PRIVILEGES;

Проверка прав пользователя

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

SHOW GRANTS FOR 'student'@'localhost';

Она показывает все выданные права.


Пример полного процесса

Создание пользователя и выдача прав:

CREATE USER 'student'@'localhost'
IDENTIFIED BY '123456';

GRANT SELECT, INSERT
ON college.*
TO 'student'@'localhost';

Теперь пользователь может: - подключаться к серверу; - читать данные; - добавлять записи.


Итоги

  • Пользователи обеспечивают контроль доступа к базе данных.
  • Создание выполняется командой CREATE USER.
  • Права выдаются командой GRANT.
  • Пароль изменяется через ALTER USER.
  • Пользователь удаляется командой DROP USER.
  • Проверка прав выполняется через SHOW GRANTS.