Как написать хорошие скрипты грантов Mysql

Я использую скрипты для создания баз данных и таблиц Mysql. Эти скрипты содержат секции grant, подобные следующей:

GRANT SELECT ON my_database.* TO my_user@"%" IDENTIFIED BY 'my_password';
REVOKE ALL PRIVILEGES ON my_database.* FROM my_user@"%";
GRANT SELECT, UPDATE ON my_database.* TO my_user@"%" IDENTIFIED BY 'my_password';

Первоначально я использовал только третью строку, но столкнулся со следующей проблемой: всякий раз, когда я удалял привилегию Q у пользователя и повторно запускал скрипт, пользователь все еще имел эту привилегию в базе данных. Поэтому я добавил строку revoke перед строкой grant.

Затем я столкнулся со следующей проблемой: всякий раз, когда я запускал сценарий на "свежей" установке Mysql, лишение привилегий не удавалось, потому что пользователь еще не существовал. Поэтому я добавил "фиктивный" грант перед отзывом.

Вопрос: Есть ли лучший способ решить эту задачу? Мои "настоящие" скрипты содержат много пользователей и много баз данных, и их трудно читать, потому что мне нужно три строки для каждого набора привилегий, которые я хочу назначить. Я бы хотел использовать только одну строку.

Редактировать (с учетом ответов и комментариев):

Я ищу самый короткий способ сказать что-то вроде

SET PRIVILEGES SELECT, UPDATE
ON my_database.*
TO my_user@"%"
IDENTIFIED BY 'my_password';

где my_user может

  • уже существовать (но может быть новым)
  • в настоящее время иметь привилегии, расширяющие те, которые я хочу, чтобы он имел
  • иметь привилегии на другие базы данных, которые должны оставаться незатронутыми
6
задан michael667 11 October 2011 в 11:39
поделиться