序文:前回の記事では、MySQLの権限管理に関する知識を紹介しました。データベース インスタンスに多数のライブラリまたはユーザーが存在する場合、権限の管理はますます煩雑になり、権限を頻繁に変更する必要が生じることがあります。 MySQL 8.0 ではロール機能が追加され、権限管理がより便利になりました。この記事では、8.0 でのロール機能について見ていきます。 1. 役割の紹介ロール機能は Oracle データベースに特有のものではなく、Oracle でよく使用されます。 MySQL バージョン 8.0 では、ついにロール機能が追加され、データベース ユーザー権限管理の新しい考え方が提供されました。 ロールは権限のコレクションとして見ることができ、このコレクションには「ロール」という統一された名前が付けられています。複数のデータベース ユーザーに同じロールの権限を付与できます。権限の変更は、ユーザーごとに変更する必要がなく、ロールを変更することで直接実行できるため、運用と管理が容易になります。ロールは作成、削除、変更することができ、その効果は管理するユーザーに適用されます。 ロールの機能について詳しく見てみましょう。 # ロールを作成する mysql> ロール 'dev_role' を作成します。 クエリは正常、影響を受けた行は 0 行 (0.15 秒) # ロールに権限を付与する mysql> grant select on db1.* to 'dev_role'@'%'; クエリは正常、影響を受けた行は 0 行 (0.12 秒) # ロールの権限を表示します。mysql> show grants for 'dev_role'@'%'; +------------------------------------------+ | dev_role@% への権限付与 | +------------------------------------------+ | `dev_role`@`%` に *.* の使用権限を付与 | | `db1`.* に対する `dev_role`@`%` への SELECT 権限を付与します | +------------------------------------------+ # ユーザーを作成し、ロール権限を付与します。mysql> create user 'dev1'@'%' identified by '123456'; クエリは正常、影響を受けた行は 0 行 (0.68 秒) mysql> 'dev_role' を 'dev1'@'%' に付与します。 クエリは正常、影響を受けた行は 0 行 (0.38 秒) # ユーザー権限を表示 mysql> show grants for 'dev1'@'%'; +------------------------------------+ | dev1@% への助成金 | +------------------------------------+ | `dev1`@`%` に *.* の使用権限を付与 | | `dev_role`@`%` を `dev1`@`%` に付与します | +------------------------------------+ セット2列(0.63秒) # ユーザー dev1 を使用して root@localhost にログインします ~]# mysql -udev1 -p123456 mysql> データベースを表示します。 +--------------------+ | データベース | +--------------------+ | 情報スキーマ | +--------------------+ セット内1列(0.34秒) mysql> CURRENT_ROLE() を選択します。 +----------------+ | 現在のロール() | +----------------+ | なし | +----------------+ セット内1列(0.59秒) どうしたの?我々が想像していたのと違って、ユーザーに特定のロール権限を付与した後、そのユーザーが対応する権限を取得できないようです。 これは、ユーザーに付与されたロールがユーザーのセッションで非アクティブであるために発生します。ユーザーにこのロールの権限が与えられるのは、付与されたロールがセッションでアクティブな場合のみです。現在のセッションでアクティブなロールを確認するには、CURRENT_ROLE() 関数を使用します。 # set default role コマンドを使用してロールをアクティブ化しますmysql> SET DEFAULT ROLE ALL TO dev1; クエリは正常、影響を受けた行は 0 行 (0.77 秒) # 再度ログインし、権限が正常であることを確認します。root@localhost ~]# mysql -udev1 -p123456 mysql> CURRENT_ROLE() を選択します。 +----------------+ | 現在のロール() | +----------------+ | `dev_role`@`%` | +----------------+ セット内1列(0.57秒) mysql> データベースを表示します。 +--------------------+ | データベース | +--------------------+ |db1| | 情報スキーマ | +--------------------+ 2 列セット (1.05 秒) set default role コマンドを使用してロールをアクティブ化するだけでなく、システム変数 activate_all_roles_on_login を変更することもできます。この変数は、ロールが自動的にアクティブ化されるかどうかを決定します。デフォルトは OFF で、自動的にアクティブ化されないことを意味します。新しいユーザーにロールを割り当てた後に手動でロールをアクティブ化する必要がないように、この変数を ON に変更することをお勧めします。 # activate_all_roles_on_login 変数を表示します。mysql> show variables like 'activate_all_roles_on_login'; +-----------------------------+-------+ | 変数名 | 値 | +-----------------------------+-------+ | ログイン時にすべてのロールを有効にする | オフ | +-----------------------------+-------+ セット1列目(1.53秒) # この変数を有効にします。まず動的に有効にします。次に、このパラメータを my.cnf 構成ファイルに追加します。mysql> set global activate_all_roles_on_login = on; クエリは正常、影響を受けた行は 0 行 (0.50 秒) # ロールは自動的にアクティブ化されますmysql> create user 'dev2'@'%' identifier by '123456'; クエリは正常、影響を受けた行は 0 行 (0.68 秒) mysql> 'dev_role' を 'dev2'@'%' に付与します。 クエリは正常、影響を受けた行は 0 行 (0.38 秒) ルート@localhost ~]# mysql -udev2 -p123456 mysql> CURRENT_ROLE() を選択します。 +----------------+ | 現在のロール() | +----------------+ | `dev_role`@`%` | +----------------+ セット内1列(0.57秒) mysql> データベースを表示します。 +--------------------+ | データベース | +--------------------+ |db1| | 情報スキーマ | +--------------------+ 2 列セット (1.05 秒) 2. 役割に関連する操作上記では、ロールを作成し、ユーザーにロール権限を付与する方法を紹介しました。ロールに関連する操作は他にもたくさんあります。それらを見てみましょう。 # ロール権限を変更する mysql> grant select on db2.* to 'dev_role'@'%'; クエリは正常、影響を受けた行は 0 行 (0.33 秒) # このロールを持つユーザーの権限は、再度ログインするとそれに応じて変更されます。root@localhost ~]# mysql -udev1 -p123456 mysql> データベースを表示します。 +--------------------+ | データベース | +--------------------+ |db1| | db2 | | 情報スキーマ | +--------------------+ 3 列セット (2.01 秒) # ロール権限を取り消す mysql> revoke SELECT ON db2.* from 'dev_role'@'%'; クエリは正常、影響を受けた行は 0 行 (0.31 秒) # ユーザーのロールを取り消す mysql> revoke 'dev_role'@'%' from 'dev1'@'%'; クエリは正常、影響を受けた行は 0 行 (0.72 秒) mysql> 'dev1'@'%' の権限を表示します。 +----------------------------------+ | dev1@% への助成金 | +----------------------------------+ | `dev1`@`%` に *.* の使用権限を付与 | +----------------------------------+ セット1列(1.06秒) # ロールを削除します(ロールを削除すると、対応するユーザーはロールの権限も失います) mysql> ロール dev_role を削除します。 クエリは正常、影響を受けた行は 0 行 (0.89 秒) また、mandatory_roles 変数を使用して必須ロールを構成することもできます。必須ロールを使用すると、明示的にロールを付与する必要なく、サーバーはデフォルトですべてのユーザーにロールを付与します。 my.cnf ファイルを使用するか、SET PERSIST を使用して設定できます。次に例を示します。 # my.cnf 設定 [mysqld] 必須ロール = 'dev_role' # 変更変数を設定します SET PERSIST required_roles = 'dev_role';
要約:役割に関連する知識については、いくつかのポイントを簡単にまとめると次のようになります。
以上がMySQLのロール機能の詳細な紹介です。MySQLのロール機能の詳細については、123WORDPRESS.COMの他の関連記事をご覧ください。 以下もご興味があるかもしれません:
|
<<: 初心者でもウェブサイトアイコンを作成する手順をすぐに学べます
>>: Vue コンポーネントの切り替え、動的コンポーネント、コンポーネントのキャッシュについて
目次1. 基礎知識: 2. DHCPサーバーの設定: 1. サーバーのIPを確認する2. DHCP ...
借財宝は最近人気が出ている携帯電話ローンソフトウェアプラットフォームです。知人同士の貸し借りが特徴で...
1. 問題時々Mysqlにログインしてパスワードを入力すると、この状況が発生しますmysql -u...
序文最近のプロジェクトでは、大量のデータを保存する必要があり、このデータには有効期限があります。クエ...
前回の記事では、docker compose を使用して FastDfs ファイル サーバーをインス...
目次1. 簡単な紹介2. スクリーンショットを実行する3. コードの紹介4. まとめ1. 簡単な紹介...
この記事の例では、Bootstrap FileInputの具体的なコードを共有して、画像アップロード...
1. Dockerがイメージをプルするdocker pull mysql (デフォルトで最新バージョ...
MySQL データベースに保存されるデータが徐々に増加すると、元のストレージ領域がいっぱいになり、M...
チャレンジ:文字列内の文字 &、<、>、" (二重引用符)、および &...
1. フォームテキスト入力のモバイル選択: テキスト入力フィールドにプロンプトが追加されている場...
<base> タグは、ページ上のすべてのリンクのデフォルトのアドレスまたはデフォルトのタ...
目次序文コンポーネントの紹介クラスコンポーネントの作成状態についてレンダリングについて関数コンポーネ...
目次ブートオプションコマンドラインパラメータの長い形式と短い形式設定ファイル構成グループシステム変数...
Ubuntu に jdk をインストールする: [リンク] UbuntuにEclipseをインストー...