3

私は試した

SHOW GRANTS FOR CURRENT_USER

そしてそれは私に示しています:

GRANT USAGE ON *.* TO 'test_user'@'localhost' IDENTIFIED BY PASSWORD 'pass'

ただし、このユーザーにはデータベースの選択が許可されていtest_scriptます。

ルートごとのショーの助成金は次のとおりです。

SHOW GRANTS FOR test_user

GRANT USAGE ON *.* TO 'test_user'@'%'
GRANT SELECT ON `test_script`.* TO 'test_user'@'%'

SHOW GRANTS FOR CURRENT_USERにtest_scriptテーブルの許可が表示されないのはなぜですか?

4

1 に答える 1

4

これは、CURRENT_USER(ログインしたユーザー)が'test_user'@'localhost'、とは異なる付与を持っているためと思われます'test_user'@'%'

SHOW GRANTS FOR 'test_user'@'%'
SHOW GRANTS FOR 'test_user'@'localhost'

を使用してTCP経由でログインする場合は、許可mysql -h 127.0.0.1 -u test_user -pを使用しているはずです。'test_user'@'%'

ホストを指定せずSHOW GRANTSにユーザー名のみのステートメントを実行すると、MySQLはユーザーの許可を一覧表示しようとします。その仕様がまったく存在しなかった場合は、次のようになります。@'%'

ERROR 1141 (42000): There is no such grant defined for user 'test_user' on host '%'

あなたの場合、その仕様は存在しましたが、とは異なる許可がありtest_user@localhostます。

于 2013-03-17T12:12:58.910 に答える