2

mySQL 5.6 で新しいユーザーを作成するときに問題が発生します

私が欲しいもの:新しいユーザーを作成するとき、それには特権がなく、いくつかの特定の列で選択と更新を許可したいだけです。したがって、彼はすべての DB で何でも更新できるはずです。公正に聞こえます。

まず、新しいユーザーを作成します。

CREATE USER 'newuser'@'%' IDENTIFIED BY 'password';

この後、新しいユーザーでログインし、show grants;コマンドを実行すると次のようになります。

GRANT USAGE ON *.* TO 'newuser'@'%' IDENTIFIED BY PASSWORD '*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19'

GRANT SELECTしたがって、私の理論では、彼は権限を持っていないため、私のデータベースで何もできません。

しかし、テスト テーブルで選択を行うと、すべての列とすべての結果を表示できます。彼は更新できます...そして彼がやりたいことはすべてできます。彼は持っているようですが、持ってGRANT SELECT,UPDATE,DELETE ... ON *.* TO 'newuser'@'%'いないので取り消すことはできません。

もちろん、私はすべての特権を取り消そうとしましたが、彼には特権がないのでできません。

私がはっきりしていることを願っています。だから私は混乱しています、何かアイデアはありますか?

ありがとう!

クレマン

4

1 に答える 1

3

test多くのデフォルト インストールでは、すべてのユーザーが、 という名前または で始まるデータベース内のテーブルに対するすべての権限を持っていますtest_

http://dev.mysql.com/doc/refman/5.6/en/default-privileges.html#idp5999952から:

デフォルトでは、mysql.db テーブルには、test データベースおよび名前が test_ で始まるその他のデータベースへのすべてのユーザーによるアクセスを許可する行が含まれています。...テスト データベースへの任意のユーザー アクセスを削除する場合は、次のようにします。

mysql> DELETE FROM mysql.db WHERE Db LIKE 'test%';
mysql> FLUSH PRIVILEGES;

または、テスト テーブルがそのような名前のデータベースにないことを確認すると、実際の動作が表示されます。

于 2013-09-11T15:33:34.763 に答える