Задавайте вопросы, мы ответим
Вы не зашли.
Всем привет.
Не могу до конца понять, как применяются разрешения. Опишу ситуацию. Есть такой набор разрешений:
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE TEMPORARY TABLES, EXECUTE ON `mydb%`.* TO 'user'@'192.168.1.1'
Нужно дать дополнительно права на базу mydb_test. Даю:
GRANT CREATE, DROP ON mydb_test.* TO 'user'@'192.168.1.1'
. Конечно делаю flush privileges
В итоге имеем следующее: при выполнении drop ему выдаёт
... DROP command denied to user 'user'@'192.168.1.1'
При этом частично на в другом приложении начали сыпаться ошибки для базы mydb_test :
... INSERT command denied to user 'user'@'192.168.1.1'
При детальном рассмотрении, пришёл к выводу, что mysql игнорирует гранты CREATE, DROP, выданные позже на базу, а использует только гранты от mydb%. По какой-то причине другому приложению наоборот, выдало только гранты CREATE, DROP и больше никаких других.
Как именно происходит выбор пермишинов в mysql? До первого совпадения? Или как-то по хитрому?
PS. База боевая и просто так тестировать пермишины не могу.
Неактивен
В документации нет информации о приоритетах обработки, поэтому если такое поведение можно подтвердить простым тестом, пишите на bugs.mysql.com.
Подчеркивание в имени заменяет любой символ. Попробуйте GRANT CREATE, DROP ON `mydb\_test`.*, чтобы второй GRANT не был шаблоном.
Неактивен