8.2.13 Когда вступают в силу изменения привилегий
Если сервер mysqld запущен без опции --skip-grant-tables, он считывает содержимое всех таблиц разрешений в память во время своей последовательности запуска. В памяти таблицы вступают в силу для контроля доступа на этом этапе.
Если вы изменяете таблицы разрешений косвенно, используя оператор управления учетными записями, сервер замечает эти изменения и загружает таблицы разрешений в память снова немедленно. Операторы управления учетными записями описаны в разделе 15.7.1, «Операторы управления учетными записями». Примеры включают GRANT, REVOKE, SET
PASSWORD и RENAME
USER.
Если вы изменяете таблицы разрешений непосредственно, используя операторы, такие как INSERT, UPDATE или DELETE (что не рекомендуется), изменения не влияют на проверку привилегий, пока вы не сообщите серверу о перезагрузке таблиц или не перезапустите его. Таким образом, если вы измените таблицы разрешений непосредственно, но забудете перезагрузить их, изменения не имеют никакого эффекта, пока вы не перезапустите сервер. Это может заставить вас задуматься, почему ваши изменения, похоже, не дают никакого результата!
Чтобы сообщить серверу о перезагрузке таблиц разрешений, выполните операцию сброса привилегий. Это можно сделать, выпустив оператор FLUSH PRIVILEGES или выполнив команду mysqladmin flush-privileges или mysqladmin reload.
Перезагрузка таблиц разрешений влияет на привилегии для каждой существующей сессии клиента следующим образом:
Изменения привилегий на уровне таблиц и столбцов вступают в силу с запросом клиента.
-
Изменения привилегий на уровне базы данных вступают в силу при следующем выполнении клиентом оператора
USE.db_nameПримечаниеПриложения клиентов могут кешировать имя базы данных; поэтому этот эффект может быть для них незаметен без фактического изменения базы данных.
Статические глобальные привилегии и пароли не затрагивают подключенного клиента. Эти изменения вступают в силу только в сеансах последующих подключений. Изменения динамических глобальных привилегий применяются немедленно. Дополнительную информацию о различиях между статическими и динамическими привилегиями см. в разделе Статические и динамические привилегии.)
Изменения набора активных ролей в сеансе вступают в силу немедленно только для этой сессии. Оператор SET
ROLE выполняет активацию и деактивацию ролей сеанса (см. раздел 15.7.1.11, «Оператор SET ROLE»).
Если сервер запущен с опцией --skip-grant-tables, он не считывает таблицы разрешений или не реализует никакого контроля доступа. Любой пользователь может подключиться и выполнить любую операцию, что небезопасно. Чтобы заставить сервер, запущенный таким образом, считывать таблицы и включать проверку доступа, выполните сброс привилегий.
© 2025 Oracle
Licensed under the GPLv2 License.