MySQL Grant для более чем одной базы данных - PullRequest
2 голосов
/ 14 сентября 2011

Я пытаюсь установить привилегии для двух баз данных одновременно.Я знаю, что их можно назначить в двух утверждениях.Есть ли способ сделать это в одном?

Я пытался

GRANT ALL PRIVILEGES 
       ON mydb1.*, mydb2.*
       TO 'reader'@'localhost'
       IDENTIFIED BY 'mypassword';

Но, похоже, работает только для одной базы данных.

Ответы [ 3 ]

3 голосов
/ 14 сентября 2011

Нет, вы не можете, как вы можете видеть на синтаксической диаграмме GRANT .Хотя, очевидно, вы можете использовать подстановочный знак *.*, чтобы применить грант ко всем базам данных, но я бы не стал этого делать.

0 голосов
/ 28 февраля 2018

Из документации GRANT (https://dev.mysql.com/doc/refman/5.7/en/grant.html):

Подстановочные знаки _ и % разрешены при указании имен базы данных в операторах GRANT, которые предоставляют привилегии на уровне базы данных. Это означает, например, что если вы хотите использовать символ _ в качестве части имени базы данных, вы должны указать его как \_ в операторе GRANT, чтобы пользователь не мог получить доступ к дополнительным базам данных соответствие шаблону подстановочного знака; например, GRANT ... ON `foo\_bar\`.* TO ....

Итак, чтобы сделать вышеупомянутое (mydb1 и mydb2), просто сделайте

GRANT ALL PRIVILEGES ON `mydb%`.* TO 'reader'@'localhost';

Etc. (Предполагая, что у вас нет mydb3 или mydb_funkytown и т. Д., На которые вы также не хотите предоставлять привилегии.)

Смотри также:

0 голосов
/ 14 сентября 2011

Вы можете предоставлять привилегии всем базам данных (используя *.*) или по одной за раз, но не 2 одновременно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...