MySQL 8の新機能ROLEの詳しい説明

MySQL 8の新機能ROLEの詳しい説明

MySQL ROLE はどのような問題を解決しますか?

プロフェッショナルな資質を持ち、権限管理に細心の注意を払っているDBAであれば、次のような問題に遭遇したことがあるかもしれません。データベースに複数の開発者アカウントがあり、ある日、

以前のすべてのアカウントが新しいスキーマのテーブルを操作できるようにするには、MySQL-8.0 の前に最初のアカウントに個別に権限を付与する必要があります。

mysql-8.0.x は権限を抽象化し、ROLE を使用して権限を表します。ROLE に新しい権限を追加すると、この ROLE に関連付けられているすべてのユーザーの権限も変更されます。

上記のシナリオは、MySQL 8.0.x では 1 つの SQL ステートメントだけで解決できます。

【スマートなMySQL開発】

MySQL は ROLE を非常に巧妙な方法で導入しました。ROLE は一連の権限のシンボルなので、この機能はすでに MySQL に存在しています。それはユーザーです。

1): キャラクターを作成する

ロール devgroup を作成します。

mysql.user テーブルを見ると、MySQL の機知に本当に驚きました。

mysql.user からユーザー、ホストを選択します。                              
+------------------+-----------+
| ユーザー | ホスト |
+------------------+-----------+
| 開発グループ | % |
| バックアップ | 127.0.0.1 |
| mysql.sys | ローカルホスト |
| ルート | ローカルホスト |
+------------------+-----------+

役割は実際には単なるユーザーです。

2): 役割を強化する

tempdb.* のすべての権限を devgroup に付与します。                             
クエリは正常、影響を受けた行は 0 行 (0.07 秒)

操作ユーザーと全く同じです!

3): ユーザーを作成し、ロール権限を割り当てる

'123456' で識別されるユーザー tom@'127.0.0.1' を作成します。                     
クエリは正常、影響を受けた行は 0 行 (0.09 秒)

tom@'127.0.0.1' に devgroup を付与します。                             
クエリは正常、影響を受けた行は 0 行 (0.09 秒)

4): 新しく作成したユーザーがログインできるかテストする

mysql -h127.0.0.1 -P3306 -utom -p123456                     
mysql: [警告] コマンドライン インターフェイスでパスワードを使用すると安全でない可能性があります。
MySQL モニターへようこそ。コマンドは ; または \g で終わります。
MySQL接続IDは16です
サーバーバージョン: 8.0.13 MySQL コミュニティサーバー - GPL

Copyright (c) 2000, 2018, Oracle およびその関連会社。無断複写・転載を禁じます。

OracleはOracle Corporationおよびその関連会社の登録商標です。
その他の名称は各社の商標である場合があります。
所有者。

ヘルプを表示するには、「help;」または「\h」と入力します。現在の入力ステートメントをクリアするには、「\c」と入力します。

mysql> 権限を表示します。                                        
+------------------------------------------+
| [email protected] への許可 |
+------------------------------------------+
| `tom`@`127.0.0.1` に *.* の使用権限を付与 |
| `devgroup`@`%` を `tom`@`127.0.0.1` に付与します |
+------------------------------------------+
セット内の 2 行 (0.00 秒)

[役割とユーザーは同じコインの裏表です]

それでも「役割」と「ユーザー」は別のものだと考えているなら、私は究極の手段を使うしかない

1): [email protected] ユーザーを、先ほどの tom ユーザーにロールとして割り当てます。

root@'127.0.0.1' を tom@'127.0.0.1' に付与します。                         
クエリは正常、影響を受けた行は 0 行 (0.04 秒)

2): ユーザー tom が自分の権限を確認する

助成金を表示する。
+----------------------------------------------------------------+
| [email protected] への許可 |
+----------------------------------------------------------------+
| `tom`@`127.0.0.1` に *.* の使用権限を付与 |
| `devgroup`@`%`,`root`@`127.0.0.1` を `tom`@`127.0.0.1` に付与します |
+----------------------------------------------------------------+
セット内の 2 行 (0.00 秒)

[email protected] の権限が設定されていることがわかります。すべて root ユーザーの権限なので、tempdb ライブラリを削除して確認してみましょう。

3): ライブラリを削除する

データベース tempdb を削除します。                                    
エラー 1044 (42000): ユーザー 'tom'@'127.0.0.1' によるデータベース 'tempdb' へのアクセスが拒否されました

このライブラリを削除する権限がないようです。実際、MySQL-8 はデフォルトではロールをアクティブ化しません。ロールをアクティブ化するかどうかは、パラメータ activate_all_roles_on_login によって制御されます。

4): activate_all_roles_on_login を有効にする

@@global.activate_all_roles_on_login=1 を設定します。
クエリは正常、影響を受けた行は 0 行 (0.00 秒)

5): トムに再度ログインし、tempdbデータベースを削除してみます。

mysql -h127.0.0.1 -P3306 -utom -p123456                     
mysql: [警告] コマンドライン インターフェイスでパスワードを使用すると安全でない可能性があります。
MySQL モニターへようこそ。コマンドは ; または \g で終わります。
MySQL接続IDは18です
サーバーバージョン: 8.0.13 MySQL コミュニティサーバー - GPL

Copyright (c) 2000, 2018, Oracle およびその関連会社。無断複写・転載を禁じます。

OracleはOracle Corporationおよびその関連会社の登録商標です。
その他の名称は各社の商標である場合があります。
所有者。

ヘルプを表示するには、「help;」または「\h」と入力します。現在の入力ステートメントをクリアするには、「\c」と入力します。

mysql> tempdb を使用します。
データベースが変更されました
mysql> データベースを表示します。
+--------------------+
| データベース |
+--------------------+
| 情報スキーマ |
|mysql |
| パフォーマンススキーマ |
|システム|
| tempdb |
+--------------------+
セット内の 5 行 (0.01 秒)

mysql> データベース tempdb を削除します。                                    
クエリは正常、影響を受けた行は 0 行 (0.09 秒)

以上がMySQL 8の新機能ROLEの詳しい説明です。MySQL 8の新機能ROLEの詳細については、123WORDPRESS.COMの他の関連記事にも注目してください!

以下もご興味があるかもしれません:
  • MySQL 8.0 のユーザーとロールの管理原則と使用方法の詳細
  • MySQL ロール関数の紹介

<<:  画像とテキストでHTTPヘッダーのあらゆる側面を理解する

>>:  Dockerコンテナとホスト間のデータ相互作用の概要

推薦する

要素動的ルーティングブレッドクラムの実装例

マスターするには: localStorage、コンポーネントのカプセル化えーと、GIF に変換したビ...

仮想マシンクローン Linux centos6.5 システム ネットワーク カード構成グラフィック チュートリアル

Linux システムに触れたばかりの初心者として、VMware 仮想マシンに CentOS6.5 シ...

Sysbench の MySQL ベンチマーク プロセスの分析

序文1.ベンチマークは、テスト オブジェクトのクラスの特定のパフォーマンス指標の定量的、再現可能、比...

Vue で Openlayer を使用して読み込みアニメーション効果を実現する

注意: スコープアニメーションは使用できません。 ! ! ! GIF経由 <テンプレート>...

MySQL 8.0.13 zipパッケージのインストール方法について

MySQL 8.0.13 にはデフォルトでデータ フォルダがあります。このフォルダを削除する必要があ...

Vue のスロットの使用法と適用シナリオの詳細な分析

スロットとは何ですか? Vue では、子コンポーネント タグの中央に何もラップできないことはわかって...

CSSで特殊なグラフィックを描く方法

1. 三角形境界線の設定 コード: 幅: 300ピクセル; 高さ: 300px; 背景: 赤; 境界...

HTML で dl(dt,dd)、ul(li)、ol(li) を使用する方法

HTML <dl> タグ#定義と使用法<dl> タグは定義リストを定義します...

IE5.0以降のHTCコンポーネントの定義の概要

Microsoft IE 5.0 がリリースされる前は、Web プログラミングにおける最大の課題は、...

CSS のみを使用して折りたたまれたヘッダー効果を作成する方法の例コード

折りたたまれたヘッダーは、特別オファーや重要なお知らせなど、ユーザーにとって重要な情報を表示するのに...

Vueは双方向データバインディングを実装します

この記事の例では、双方向データバインディングを実装するためのVueの具体的なコードを参考までに共有し...

Vue3 Vue CLI マルチ環境設定

目次1. はじめに2. 切り替え1. 開発および本番環境の設定ファイルを追加する2. 複数の環境をサ...

XHTML でのハイパーリンク タグの使用に関するチュートリアル

ハイパーリンク。「リンク」とも呼ばれます。ハイパーリンクは、私たちが閲覧する Web ページのいたる...

MySQL 8.0.22 のインストールと設定のグラフィックチュートリアル

MySQL8.0.22のインストールと設定(超詳細)参考までに、具体的な内容は次のとおりです。みなさ...