4

MySQL で、データベース内の一連のテーブルでユーザーに GRANT を実行することは可能ですか?

これらのどちらも機能していないようです:

GRANT SELECT ON  `testdb`.`%_testing` TO  'wildcardtest'@'localhost';
GRANT SELECT ON  `testdb`.`testing%` TO  'wildcardtest'@'localhost';

また、MySQL のマニュアルでは、どちらの方法でも答えが得られないようです。

4

3 に答える 3

5

GRANT ステートメントで機能する唯一のワイルドカードは *

GRANT SELECT ON `testdb`.* TO 'user'@'localhost';
GRANT SELECT ON *.* TO 'privilegeduser'@'localhost';

それはすべてまたは1つです。テーブル名と付与された特権を動的に照合する機能はありません。

于 2009-09-28T21:55:30.720 に答える
1

いいえ。テーブル名はコンマで区切ることができますが、GRANT ではワイルドカードを使用できません。

于 2009-09-28T21:27:30.290 に答える
1

新しい空のデータベースを作成します。この新しいデータベースで元のデータベースにアクセスできるようにします (元のデータベースに既にアクセスできるユーザーを使用します) CREATE VIEW テストを SELECT * from originaldatabase.tablename WHERE 条件...

次に、NewDatabase.* を 'testuser'@'localhost' に GRANT 選択して、テスト ユーザーに NewDatabase へのアクセスを許可します。

次に、testuser にアクセスさせたいテーブルのビューのみを作成します。

また、ビューの WHERE 部分で USER() を実行できることも覚えておいてください。

例: create view test as select * from original.customer where mysql_user = USER()

original.customer には、列「mysql_user」が必要であり、テスト ユーザーが表示できるすべての行には、testuser@localhost がエントリとして含まれている必要があります。

testuser には、作成されたすべてのビューがデータベース「test」のテーブルとして表示されます。

于 2015-09-16T10:23:28.470 に答える