私は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
_
あなたが言ったように、MySQLではUSAGE
は「特権なし」と同義です。 MySQLリファレンスマニュアル から:
USAGE特権指定子は、「特権なし」の略です。グローバルレベルでGRANTを使用して、既存のアカウント権限に影響を与えることなく、リソース制限やSSL特性などのアカウント属性を変更します。
USAGE
は、アカウントに実際の特権を付与せずにアカウントが存在することをMySQLに通知する方法です。それらは単にMySQLサーバーを使用するuseの許可があるため、USAGE
です。これは、権限が設定されていない`mysql`.`user`
テーブルの行に対応します。
IDENTIFIED BY
句は、そのユーザーにパスワードが設定されていることを示します。ユーザーが自分が誰であるかを知るにはどうすればよいですか?彼らは自分のアカウントの正しいパスワードを送信することで自分自身をidentifyします。
ユーザーのパスワードは、特定のデータベースまたはテーブルに関連付けられていないグローバルレベルのアカウント属性の1つです。 `mysql`.`user`
テーブルにも存在します。ユーザーにON *.*
以外の特権がない場合は、USAGE ON *.*
が付与され、パスワードハッシュがそこに表示されます。多くの場合、これはCREATE USER
ステートメントの副作用です。この方法で作成されたユーザーは、最初は特権を持たないため、USAGE
が付与されるだけです。
GRANT USAGE on *.* TO
の意味を見つけようとしていて、ここにありました。次のコマンド(CREATE
)を使用してcreateユーザーにGRANT USAGE on *.* TO user IDENTIFIED BY PASSWORD password
が付与されることを明確にすることができます。
CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
grantGRANT
で特権を付与すると、その上に新しい特権が追加されます。