Тариф успешно добавлен в корзину
В корзину
url image

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

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

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

Создание нового пользователя происходит в среде mysql с помощью команды CREATE USER:

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

Где:

  1. 'username' — имя создаваемого пользователя.
  2. 'host' — хост, с которого пользователь может подключаться. Укажите localhost для локальных подключений или % для подключений с любых хостов. Также вы можете установить любой IP-адрес или доменное имя.
  3. 'password' — пароль для нового пользователя.

Например, для создания пользователя user с возможностью локального подключения и заданным паролем password необходимо ввести:

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

Для сравнения создадим пользователя user1 с тем же паролем и возможностью подключения с любого хоста:

CREATE USER 'user1'@'%' IDENTIFIED BY 'password';
Создание нового Mysql пользователя

Чтобы убедиться, что пользователь был успешно создан, вы можете выполнить запрос к системной таблице mysql.user:

SELECT User, Host FROM mysql.user;
Проверка созданного Mysql пользователя

Настройка привилегий

Добавление прав

Когда пользователь создан, можно переходить к назначению прав (привилегий). Все привилегии устанавливаются с помощью команды GRANT на уровне сервера. Также эта команда используется для добавления дополнительных привилегий к уже существующим для определенного пользователя.

Синтаксис запроса выглядит следующим образом:

GRANT privileges ON database.table TO 'username'@'host';

Если требуется предоставить привилегии для всех баз данных или таблиц, замените их имена звездочкой — «*». Чтобы установить привилегии на уровне столбцов, необходимо в скобках указать названия столбцов рядом с каждой соответствующей привилегией:

GRANT privilege (column1, column_2 ...) ON database.table TO 'username'@'host';

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

  • Создание и удаление баз данных и таблиц —  CREATE и DROP.

  • Изменение структуры базы данных (добавление, удаление или изменение столбцов и таблиц) —  ALTER.

  • Предоставление привилегий другим пользователям — GRANT OPTION.

  • Предоставление права выполнения административных команд — SUPER.

  • Чтение из, запись в и изменение таблиц в данной базе данных — SELECT, INSERT, UPDATE, DELETE.

  • Создание и удаление индексов в таблицах данной базы данных — INDEX.

  • Вызов хранимых процедур и функций в данной базе данных — EXECUTE.

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

SHOW PRIVILEGES;

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

Возможные привилегии в Mysql

Давайте рассмотрим пример предоставления наиболее используемых привилегий. За основу возьмем пользователя user2:

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

Создадим базу данных user2db:

CREATE DATABASE user2db;

Создадим таблицу user2table:

USE user2db;
CREATE TABLE user2table (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255));

Осталось выдать права для работы с новой таблицей. Установим привилегии SELECT, INSERT, UPDATE, DELETE:

GRANT SELECT, INSERT, UPDATE, DELETE ON user2db.user2table TO 'user2'@'localhost';

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

Отзыв привилегий

Процесс удаления разрешений происходит с использованием команды REVOKE. Она позволяет удалить одно или несколько разрешений для конкретного пользователя или роли. Синтаксис команды:

REVOKE privilege ON database.table FROM 'username'@'host';

Для отзыва нескольких привилегий сразу укажите их через запятую:

REVOKE privilege 1, privilege 2, ..., Privilege N ON database.table FROM 'username'@'host';

Для отзыва всех привилегий для конкретного пользователя запрос имеет вид:

REVOKE ALL PRIVILEGES ON database.table FROM 'username'@'host';

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

REVOKE ALL PRIVILEGES ON user2db.user2table FROM 'user2'@'localhost';

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

Результат отзыва привилегий пользователя

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

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

SHOW GRANTS FOR 'username'@'host';

Где 'username'@'host' — это пользователь и его хост, для которого вы хотите увидеть привилегии.

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

Просмотр привилегий пользователя Mysql

Первая строка указывает, что у пользователя 'user2'@'localhost' есть право USAGE на все базы данных и таблицы. Это право является стандартным для новых пользователей и предоставляется без дополнительного указания. Вторая строка указывает на привилегии, которые мы установили ранее.

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

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

Ранее мы создали простого пользователя с именем «user», сделаем из него суперпользователя. Для этого воспользуемся командой:

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

После этого проверим привилегии суперпользователя при помощи запроса:

SHOW GRANTS FOR 'user'@'localhost';
Просмотр привилегий суперпользователя

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

SHOW GRANTS FOR 'user1'@'%';
Результат переименования пользователя Mysql

В данном случае привилегии полностью отсутствуют, имеются только права на подключение к серверу MySQL.

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

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

Для выполнения переименования пользователя в MySQL используется RENAME USER. У команды существует 2 ограничения:

  1. Необходимо иметь глобальное право CREATE USER или право UPDATE на системную схему Mysql. Если переменная системы read_only включена, команда RENAME USER также требует права CONNECTION_ADMIN (или устаревшего права SUPER).
  2. Новое имя пользователя не должно уже существовать в базе данных.

Синтаксис команды выглядит следующим образом:

RENAME USER old_username TO new_username;

Для примера переименуем пользователя user в newuser. Уберем права суперпользователя, которые дали ранее:

REVOKE ALL PRIVILEGES ON *.* FROM 'user'@'localhost';

Произведем переименование:

RENAME USER 'user'@'localhost' TO 'newuser'@'localhost';

Проверим результат при помощи команды:

SELECT User, Host FROM mysql.user;
Результат переименования пользователя

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

RENAME USER 'newuser'@'localhost' TO 'newuser'@'%';
Результат изменения хоста для пользователя

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

Доступно при помощи команды DROP USER. Будьте внимательны при выполнении этой операции. Она выполняется без дополнительного подтверждения и способна удалить как простого пользователя, так и суперпользователя.

Синтаксис выглядит так:

DROP USER 'username'@'host';

Удалим пользователя newuser:

DROP USER 'newuser'@'%';

Проверим список пользователей после операции:

SELECT User, Host FROM mysql.user;
Результат удаления пользователя Mysql

Заключение

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

Этот материал был полезен?

Скидка 25% новым клиентам!
Закажи сервер сегодня и получи скидку на первый месяц аренды!