2つのデータベースの権限を同時に設定しようとしています。私はそれらを2つのステートメントで割り当てることが可能であることを知っています。1つでそれを行う方法はありますか?
私は試した
GRANT ALL PRIVILEGES
ON mydb1.*, mydb2.*
TO 'reader'@'localhost'
IDENTIFIED BY 'mypassword';
しかし、それは1つのデータベースでしか機能しないようです。
いいえ、できません。GRANT構文図でわかるように。どうやら、ワイルドカードを使用し*.*
てすべてのデータベースに付与を適用できますが、私はそうしません。
GRANTドキュメント(https://dev.mysql.com/doc/refman/5.7/en/grant.html)から:
およびワイルドカードは、データベースレベルで特権を付与するステートメントでデータベース名を指定するときに許可され
_
ます。これは、たとえば、データベース名の一部として文字を使用する場合は、ステートメントのように文字を指定して、ユーザーがワイルドカードパターンに一致する追加のデータベースにアクセスできないようにする必要があることを意味します。たとえば、GRANT ... ON%
GRANT
_
\_
GRANT
`foo\_bar\`.* TO ....
したがって、上記(mydb1およびmydb2)を実行するには、
GRANT ALL PRIVILEGES ON `mydb%`.* TO 'reader'@'localhost';
など(mydb3やmydb_funkytownなどがなく、特権も付与したくない場合)
参照:
すべてのデータベースに(を使用して*.*
)特権を付与することも、一度に1つに特権を付与することもできますが、一度に2つに付与することはできません。