Documentation Home
MySQL 8.0 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 36.1Mb
PDF (A4) - 36.2Mb


MySQL 8.0 リファレンスマニュアル  /  ...  /  NDB_STORED_USER での分散 MySQL 権限

このページは機械翻訳したものです。

23.5.12 NDB_STORED_USER での分散 MySQL 権限

NDB 8.0.18 では、NDB Cluster に接続された SQL ノード間でユーザー、役割、および特権を共有および同期するための新しいメカニズムが導入されました。 これを有効にするには、NDB_STORED_USER 権限を付与します。 使用方法の詳細は、権限の説明を参照してください。

NDB_STORED_USER は、他の権限と同様に SHOW GRANTS の出力に出力されます。 特権が共有されていることを確認するには、NDB Cluster ディストリビューションに付属の ndb_select_all ユーティリティーを使用します (フォーマットを保持するためにラップされた出力の一部):

shell> ndb_select_all -d mysql ndb_sql_metadata
type    name    seq     note    sql_ddl_text
11      "'jon'@'localhost'"     0       4       "CREATE USER 'jon'@'localhost'
IDENTIFIED WITH 'caching_sha2_password' AS
'$A$005${B];3!?tI\".EFy\ZA5K5DQHrWiBvuRNYTIMeO0YeBlPpZotFRPjVTYzTA5b0' REQUIRE
NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK PASSWORD HISTORY DEFAULT PASSWORD
REUSE INTERVAL DEFAULT PASSWORD REQUIRE CURRENT DEFAULT"
12      "'jon'@'localhost'"     0       [NULL]  "GRANT USAGE ON *.* TO `jon`@`localhost`"
12      "'jon'@'localhost'"     3       [NULL]  "GRANT ALL PRIVILEGES ON `test`.* TO `jon`@`localhost`"
12      "'jon'@'localhost'"     2       [NULL]  "GRANT ALL PRIVILEGES ON `mydb`.* TO `jon`@`localhost`"
12      "'jon'@'localhost'"     1       [NULL]  "GRANT NDB_STORED_USER ON *.* TO `jon`@`localhost`"
5 rows returned

ndb_sql_metadata は、mysql または他の MySQL クライアントを使用して表示できない特別な NDB テーブルです。

GRANT NDB_STORED_USER ON *.* TO 'cluster_app_user'@'localhost'などの NDB_STORED_USER 権限を付与するステートメントは、SHOW CREATE USER cluster_app_user@localhost および SHOW GRANTS FOR cluster_app_user@localhost のクエリーを使用してスナップショットを作成し、その結果を ndb_sql_metadata に格納するように NDB に指示することで機能します。 その後、他の SQL ノードはスナップショットの読取りおよび適用をリクエストされます。 MySQL サーバーは、クラスタを起動して SQL ノードとして結合するたびに、これらのストアド CREATE USER および GRANT ステートメントをクラスタスキーマの同期プロセスの一環として実行します。

元の SQL ノード以外の SQL ノードで SQL ステートメントが実行されると、そのステートメントは NDBCLUSTER ストレージエンジンのユーティリティスレッドで実行されます。これは、MySQL レプリケーションレプリカアプリケーションスレッドと同等のセキュリティ環境内で実行されます。

NDB_STORED_USER を使用したユーザーへの変更は、非同期に分散されることに注意してください。 分散スキーマの変更操作は同期的に実行されるため、分散ユーザーまたはユーザーに対する変更後の次の分散スキーマの変更は同期ポイントとして機能します。 保留中のユーザー変更は、スキーマ変更分散が開始される前に完了まで実行されます。この後、スキーマ変更自体が同期的に実行されます。 たとえば、DROP DATABASE ステートメントが分散ユーザーの DROP USER に続く場合、ユーザーの削除がすべての SQL ノードで完了するまで、データベースの削除は実行されません。

複数の GRANTREVOKE または複数の SQL ノードからの他のユーザー管理ステートメントによって、特定のユーザーの権限が異なる SQL ノードで相違する場合は、権限が正しいことがわかっている SQL ノードでこのユーザーに対して GRANT NDB_STORED_USER を発行することで、この問題を修正できます。これにより、権限の新しいスナップショットが取得され、他の SQL ノードと同期されます。

NDB Cluster 8.0 は、NDB 7.6 以前のリリースで実装されているように、NDB ストレージエンジンを使用するように MySQL 特権テーブルを変換することによって、NDB Cluster 内の SQL ノード間での MySQL ユーザーおよび特権の配布をサポートしていません (Distributed Privileges Using Shared Grant Tables を参照)。 以前のリリースから NDB 8.0 へのアップグレードに対するこの変更の影響については、セクション23.2.7「NDB Cluster のアップグレードおよびダウングレード」 を参照してください。