116

私はDBMSの管理者側に不慣れで、これに気付いたとき、今夜(MySQLを使用して)新しいデータベースをセットアップしていました。ユーザーに初めて特権を付与した後、次のような別の付与が作成されます。

GRANT USAGE on *.* TO user IDENTIFIED BY PASSWORD password

ドキュメントには、USAGE特権は「特権なし」を意味すると書かれているので、助成金は階層的に機能し、おそらくユーザーはすべてのデータベースに対して何らかの特権を持っている必要があると推測しています。

IDENTIFIED BYまた、私が作成した助成金に条項がないのに、この行に条項が含まれている理由もわかりません(主に、IDENTIFIED BY条項がどのような目的を果たしているのか理解していないためです)。

編集:これを最初に述べなかったことをお詫びします、助成金は

GRANT ALL PRIVILEGES ON database.* TO admin_user
GRANT SELECT, INSERT, UPDATE, DELETE ON database.* TO user
4

3 に答える 3

165

あなたが言ったように、MySQLUSAGEでは「特権なし」と同義です。MySQLリファレンスマニュアルから:

USAGE特権指定子は、「特権なし」の略です。GRANTとともにグローバルレベルで使用され、既存のアカウント権限に影響を与えることなく、リソース制限やSSL特性などのアカウント属性を変更します。

USAGEアカウントに実際の特権を付与せずにアカウントが存在することをMySQLに通知する方法です。彼らはMySQLサーバーを使用する権限を持っているだけなので、 USAGE`mysql`.`user`これは、特権が設定されていないテーブルの行に対応します。

このIDENTIFIED BY句は、そのユーザーにパスワードが設定されていることを示しています。ユーザーが自分の言うとおりの人物であることをどのようにして知ることができますか?彼らは自分のアカウントに正しいパスワードを送信することで自分自身を識別します。

ユーザーのパスワードは、特定のデータベースまたはテーブルに関連付けられていないグローバルレベルのアカウント属性の1つです。それはまたテーブルに住んでい`mysql`.`user`ます。ユーザーが他の特権を持っていない場合ON *.*、それらは付与USAGE ON *.*され、パスワードハッシュがそこに表示されます。CREATE USERこれは多くの場合、ステートメントの副作用です。ユーザーがそのように作成された場合、最初は特権がないため、単に付与されUSAGEます。

于 2010-10-19T19:43:30.113 に答える
12

私はその意味を見つけようとしていて、GRANT USAGE on *.* TOここで見つけました。次のコマンド()を使用してユーザーを作成するGRANT USAGE on *.* TO user IDENTIFIED BY PASSWORD passwordと、それが付与されることを明確にできます。CREATE

CREATE USER 'user'@'localhost' IDENTIFIED BY 'password'; 

で特権を付与するGRANTと、その上に新しい特権が追加されます。

于 2013-03-15T17:59:50.333 に答える
3

さらに、IDENTIFIED BY句を使用しない場合のmysqlパスワードは空白の値である可能性があり、空白でない場合は暗号化される可能性があります。ただし、yesUSAGEは、などの単純なリソースリミッターを付与することでアカウントを変更するために使用されMAX_QUERIES_PER_HOURます。これも、WITH句を使用して指定でき、GRANT USAGE(権限が追加されていない)またはと組み合わせて、グローバルレベル、データベースレベルでGRANT ALL指定することもできます。GRANT USAGEテーブルレベルなど...

于 2011-12-18T06:42:56.880 に答える