Когда очистить привилегии в MySQL действительно нужен?

При создании новых таблиц и пользователь, чтобы идти вместе с ним, я обычно просто вызвать следующие команды:

CREATE DATABASE mydb;
GRANT ALL PRIVILEGES ON mydb.* TO myuser@localhost IDENTIFIED BY "mypassword";

Я никогда не нужно использовать команду `заподлицо привилегии после опубликования двух предыдущих команд. Пользователи могут войти в систему и использовать их базу данных и запустить PHP-скрипты, которые подключаются к базе данных просто отлично. Но я вижу эту команду используют практически в каждом учебнике я смотрю на.

Когда команды заподлицо привилегии действительно необходимы, а когда это лишнее?

Комментарии к вопросу (3)
Решение

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

Из документации MySQL:

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

, чтобы сообщить серверу, чтобы обновить таблицы, выполнить флеш-привилегии операции. Это может быть сделано путем выдачи заподлицо заявление привилегий или выполняя mysqladmin привилегии или команда сеанс.

Если вам изменять таблицы привилегий косвенно через аккаунт-менеджера заявления, такие как Грант, отменить, Установить пароль, или переименовать пользователя сервер замечает эти изменения и загружает таблицы в памяти снова немедленно.

Комментарии (3)

МНОГАБУКАФ.

Вы должны использовать привилегии врезная; только при изменении таблицы напрямую, используя такие утверждения, как "вставить", "обновить" или "удалить".

Комментарии (1)

Просто чтобы дать несколько примеров. Позвольте'говорят, что вы измените пароль для пользователя 'Алекс'. Вы можете изменить этот пароль можно несколькими способами. Например:

mysql> update* user set password=PASSWORD('test!23') where user='alex'; 
mysql> flush privileges;

Здесь вы использовали обновление. Если вы используйте INSERT, UPDATE или Delete на таблицы необходимо использовать привилегии заподлицо для того, чтобы перезагрузить таблицы привилегий.

Или вы можете изменить пароль такой:

mysql> set password for 'alex'@'localhost'= password('test!24');

Вот она's не необходимо, чтобы использовать "и очистить привилегии; и" При изменении таблицы предоставления косвенно через аккаунт-менеджера заявлений, таких как Грант, отменить, Установить пароль, или переименовать пользователя, сервер замечает эти изменения и загружает таблицы в памяти снова немедленно.

Комментарии (1)

2 очка в дополнение ко всем другим хорошие ответы:

1:

какие таблицы?

от dev.mysql.com

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

уточнение: в MySQL есть встроенные базы данных , одним из них является "с MySQL" и все столы на "с MySQL" в базе был призван предоставить таблиц

2:

обратите внимание, что если вы выполните:

UPDATE a_grant_table SET password=PASSWORD('1234') WHERE test_col = 'test_val';

и обновить страницу phpmyadmin , вы'МР понять, что ваш пароль был изменен на столе, но даже теперь если вы выполните:

mysql -u someuser -p

ваш доступ будет запрещен ваш новый пароль, пока вы не выполните :

FLUSH PRIVILEGES;
Комментарии (0)