ユーザーに初めて権限を付与するときに「GRANT USAGE」が作成される理由は何ですか? 質問する

ユーザーに初めて権限を付与するときに「GRANT USAGE」が作成される理由は何ですか? 質問する

私は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

ベストアンサー1

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

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

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

このIDENTIFIED BY条項は、そのユーザーにパスワードが設定されていることを示しています。ユーザーが本人であるかどうかはどうやってわかるのでしょうか?識別するアカウントの正しいパスワードを送信することで、自分自身でログインできます。

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

おすすめ記事