Чтобы обеспечить безопасность базы данных, для конкретных пользователей устанавливаются определенные разрешения, называемые привилегиями пользователя. Пользователь root имеет все привилегии, и любое разрешение может быть предоставлено пользователю root или отозвано им. Разрешение для различных типов операций с базой данных, таких как вставка, обновление, удаление, выбор и создание, может быть установлено для пользователя путем предоставления разрешения и удалено путем отзыва разрешения. После предоставления определенных разрешений для пользователя есть два способа сделать изменения эффективными. Один из способов — перезапустить сервер базы данных, а другой — использовать команду сброса привилегий. В этом руководстве показано использование команды сброса привилегий MySQL.
Эффекты использования привилегий Flush
- Новое разрешение для пользователя будет активировано после выполнения команды FLUSH PRIVILEGES, и пользователь сможет получить доступ к новым привилегиям.
- Если текущая база данных будет изменена на новую, то все вновь предоставленные разрешения будут затронуты для команды FLUSH PRIVILEGES.
- Изменения базы данных, связанные с глобальными настройками и паролем пользователя, не затрагиваются командой FLUSH PRIVILEGES.
- Эффект изменений базы данных не будет виден после выполнения команды FLUSH PRIVILEGES, если база данных кэширована. Вы должны установить текущую базу данных с другой базой данных и снова перейти к предыдущей базе данных.
Синтаксис:
Синтаксис команды сброса привилегий приведен ниже. После выполнения следующей команды таблица разрешений будет перезагружена в память.
FLUSH PRIVILEGES;
Использование привилегий MySQL Flush
Вы должны создать нового пользователя MySQL, чтобы знать, как использовать команду FLUSH PRIVILEGES.
Подключиться к серверу MySQL
Откройте терминал и подключитесь к серверу MySQL, выполнив следующую команду.
$ sudo mysql —u root
Создайте нового пользователя
Выполните следующую команду, чтобы создать нового пользователя с именем пользователя » fahmida » и паролем » secret «.
CREATE USER ‘fahmida’@‘localhost’ IDENTIFIED BY ‘secret’;
Когда в MySQL создается новый пользователь, для новых пользователей устанавливаются разрешения по умолчанию. Таблица пользователей базы данных MySQL содержит данные о разрешениях всех пользователей. Выполните следующую команду, чтобы проверить разрешение для вновь созданного пользователя » fahmida «.
SELECT * FROM mysql.user WHERE user=‘fahmida’ \G;
Приведенная выше команда сгенерирует длинный список информации. Некоторая часть вывода показана на следующем изображении. Вывод показывает, что пользователю » fahmida » по умолчанию не предоставлены никакие разрешения.
Обновите разрешение пользователя
Конкретное разрешение для любого пользователя может быть предоставлено с помощью запроса UPDATE или с помощью команды GRANT. Если разрешение изменено с помощью запроса UPDATE, то для вступления изменения в силу требуется команда FLUSH PRIVILEGE. Если разрешение изменено с помощью команды GRANT, то не требуется использовать команду FLUSH PRIVILEGE, чтобы изменение вступило в силу.
Выполните следующий запрос UPDATE, чтобы установить разрешение SELECT для пользователя, fahmida, для всех таблиц всех баз данных.
UPDATE mysql.user set Select_priv=‘Y’ WHERE user=‘fahmida’;
Чтобы сделать операцию обновления эффективной, вы должны запустить команду FLUSH PRIVILEGE.
FLUSH PRIVILEGES;
Повторно запустите следующую команду после установки разрешения SELECT для пользователя » fahmida «.
SELECT * FROM mysql.user WHERE user=‘fahmida’ \G;
Выход:
Следующий вывод показывает, что пользователю предоставлена привилегия SELECT.
Выполните следующую команду GRANT, чтобы установить разрешения INSERT и DELETE для пользователя fahmida. Вам не нужно использовать команду FLUSH PRIVILEGES для этой команды.
GRANT INSERT, DELETE ON *.* TO fahmida@‘localhost’;
Запустите следующую команду SELECT еще раз после установки разрешений INSERT и DELETE для пользователя fahmida.
SELECT * FROM mysql.user WHERE user=‘fahmida’ \G;
Выход:
Следующий вывод показывает, что пользователю были предоставлены привилегии INSERT и DELETE.
Изменить пароль пользователя
В MySQL существует множество команд для изменения пароля пользователя. Операторы SET, ALTER и UPDATE. Команда FLUSH PRIVILEGE потребуется, если пароль будет изменен с помощью запроса UPDATE, а команда FLUSH PRIVILEGE не потребуется, если пароль будет изменен с помощью команд SET или ALTER. Здесь показано использование операторов ALTER и UPDATE.
Выполните следующую команду, чтобы проверить значение значения authentication_string перед изменением пароля.
SELECT authentication_string FROM mysql.user WHERE user=‘fahmida’;
Выход:
Следующий вывод показывает значение authentication_string для пароля, ’ secret ’.
Выполните следующую команду ALTER, чтобы изменить пароль пользователя » fahmida».
ALTER USER ‘fahmida’@‘localhost’ IDENTIFIED BY ‘secret2’;
Вам не нужно использовать команду FLUSH PRIVILEGES для активации пароля, измененного оператором ALTER. Выполните следующую команду, чтобы проверить значение authentication_string после изменения пароля.
SELECT authentication_string FROM mysql.user WHERE user=‘fahmida’;
Выход:
Следующий вывод показывает новое значение authentication_string после изменения пароля.
Выполните следующую инструкцию UPDATE, чтобы установить пароль NULL, используя authentication_string для пользователя » fahmida».
UPDATE mysql.user SET authentication_string = NULL WHERE user=‘fahmida’;
Здесь необходимо использовать команду FLUSH PRIVILEGES, чтобы изменение вступило в силу для инструкции UPDATE.
FLUSH PRIVILEGES;
Выполните следующую команду, чтобы проверить значение authentication_string после изменения пароля.
SELECT authentication_string FROM mysql.user WHERE user=‘fahmida’;
Выход:
Следующий вывод показывает новое значение authentication_string после изменения пароля.
Заключение
Использование команды FLUSH PRIVILEGES после предоставления привилегий и изменения пароля для пользователя показано в этом руководстве путем создания новой учетной записи пользователя. Использование команды FLUSH Privilege будет снято после прочтения этого руководства.