2

ユーザーがいて、そのユーザーとしてログインしています。そのユーザーは次のことを行います。

データベースのバグを作成します。

正常に動作します。

bugs.* のすべてを「bugs@localost」に許可します。

また、Grant Access (現在ログインしているユーザー) がありません。

ログインしたユーザーの特権を表示します (select user(); によって検証されます)
+-------------------------------- -------------------------------------------------- ------------------------------+
| user1@% への付与 |
+---------------------------------------------------------------- -------------------------------------------------- ------------+
| *.* のすべての特権をパスワード ' * ' で識別される 'user1'@'%' に付与|
| | GRANT ALL PRIVILEGES ON aDatabase.* TO 'user1'@'%' |
+---------------------------------------------------------------- -------------------------------------------------- ------------+
2 行セット (0.00 秒)

(ログインしたユーザーをuser1に変更し、2番目のすべての権限をaDatabase
に変更しました。ルートとしてログインして、権限を問題なく付与できます...

では、「ALL PRIVILEGES」以外に必要な特権は何ですか??!?? そして、どのコマンドが私にそれらを許可しますか.

4

1 に答える 1

2

問題は、問題のあるステートメントを実行することです

grant all on bugs.* to 'bugs@localost';

GRANT OPTION と呼ばれる特権が必要ですが、これはあなたが思うかもしれませんが、ALL PRIVILEGES には含まれていません。その場合でも、ユーザーは、最初に持っている他のユーザーにのみ権限を付与できます。オンライン ドキュメントを参照してください。

GRANT OPTION を最初の grant コマンドに含めるには、次のようにします。

GRANT ALL PRIVILEGES ON *.* TO 'user1'@'%' WITH GRANT OPTION;

付与ステートメントから IDENTIFIED BY PASSWORD 句を削除しました。

于 2013-07-22T16:16:10.850 に答える