У меня есть несколько заявлений о предоставлении привилегий на уровне БД для определенного пользователя.Если я выполню show grants
, я увижу:
GRANT USAGE ON *.* TO 'user1'@'%'
GRANT INSERT, UPDATE, DELETE, CREATE ON `db1`.* TO 'user1'@'%'
GRANT INSERT, UPDATE, DELETE, CREATE ON `db_with_pattern_\_%`.* TO 'user1'@'%'
GRANT SELECT ON *.* TO 'user1'@'%'
Я ожидаю, что последняя строка предоставит user1
SELECT
привилегии для всех схем, а предыдущие строки предоставят INSERT, UPDATE, DELETE, CREATE
для определенных схем, а значит и из-за последней строки предоставляет SELECT на всех схемах.Но это не работает.Однако, когда я пытаюсь выбрать из какой-либо таблицы db1
или db_with_pattern_\_%
MySQL throw select denied for user user1
, user1
все еще может запускать select из любой другой схемы из моей БД.
Я просмотрел grant-privileges раздел из документации по MySQL, и он не сталкивался с какими-либо разъяснениями об ограничительных привилегиях подстановки, когда существуют более конкретные операторы GRANT.
Должен ли я каждый раз указывать явно SELECT при использовании конкретной схемы в grantзаявления или я что то делаю неправильно?