Spec-Zone.ru › MySQL 9.2

25.6.13 Синхронизация привилегий и NDB_STORED_USER

Синхронизация привилегий — это механизм, используемый NDB Cluster для совместного использования и синхронизации пользователей, ролей и привилегий между узлами SQL. Это можно включить, предоставив привилегию NDB_STORED_USER. Смотрите описание привилегии для информации об использовании.

NDB_STORED_USER выводится в результате выполнения SHOW GRANTS так же, как и любая другая привилегия, как показано здесь:

mysql> SHOW GRANTS for 'jon'@'localhost';
+---------------------------------------------------+
| Grants for jon@localhost                          |
+---------------------------------------------------+
| GRANT USAGE ON *.* TO `jon`@`localhost`           |
| GRANT NDB_STORED_USER ON *.* TO `jon`@`localhost` |
+---------------------------------------------------+

Вы также можете проверить, что привилегии разделены для этой учетной записи, используя утилиту ndb_select_all, поставляемую с NDB Cluster, как показано ниже (некоторые выводы переформатированы для сохранения форматирования):

$> ndb_select_all -d mysql ndb_sql_metadata | grep '`jon`@`localhost`'
12      "'jon'@'localhost'"     0       [NULL]  "GRANT USAGE ON *.* TO `jon`@`localhost`"
11      "'jon'@'localhost'"     0       2       "CREATE USER `jon`@`localhost`
IDENTIFIED WITH 'caching_sha2_password' AS
0x2441243030352466014340225A107D590E6E653B5D587922306102716D752E6656772F3038512F
6C5072776D30376D37347A384B557A4C564F70495158656A31382E45324E33
REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK PASSWORD HISTORY DEFAULT
PASSWORD REUSE INTERVAL DEFAULT PASSWORD REQUIRE CURRENT DEFAULT"
12      "'jon'@'localhost'"     1       [NULL]  "GRANT NDB_STORED_USER ON *.* TO `jon`@`localhost`"

ndb_sql_metadata — это специальная NDB таблица, которая не видна с помощью mysql или других клиентов MySQL.

Оператор, предоставляющий привилегию NDB_STORED_USER, например GRANT NDB_STORED_USER ON *.* TO 'cluster_app_user'@'localhost', работает, направляя NDB на создание моментального снимка с использованием запросов SHOW CREATE USER cluster_app_user@localhost и SHOW GRANTS FOR cluster_app_user@localhost, а затем сохраняя результаты в ndb_sql_metadata. Затем от других узлов SQL запрашивается чтение и применение снимка. Всякий раз, когда сервер MySQL запускается и присоединяется к кластеру в качестве узла SQL, он выполняет эти сохраненные CREATE USER и GRANT операторы в рамках процесса синхронизации схемы кластера.

Всякий раз, когда оператор SQL выполняется на узле SQL, отличном от того, где он был инициирован, оператор выполняется в служебной потоковой нити хранилища NDBCLUSTER; это делается в среде безопасности, эквивалентной среде потоковой нити приложения-приемника репликации MySQL.

Узел SQL, производящий изменение привилегий пользователя, берет глобальную блокировку перед этим, что предотвращает тупики при одновременных операциях ACL на разных узлах SQL.

Следует помнить, что, поскольку операции совместного изменения схемы выполняются синхронно, следующее совместное изменение схемы, следующее за изменением любого совместно используемого пользователя или пользователей, служит точкой синхронизации. Любые ожидающие изменения пользователей выполняются до начала распространения изменений схемы; после этого само изменение схемы выполняется синхронно. Например, если оператор DROP DATABASE следует за оператором DROP USER распределенного пользователя, удаление базы данных не может произойти до тех пор, пока удаление пользователя не будет завершено на всех узлах SQL.

В случае, если несколько GRANT, REVOKE или других операторов администрирования пользователей с нескольких узлов SQL приводят к расхождению привилегий для данного пользователя на разных узлах SQL, эту проблему можно решить, выпустив GRANT NDB_STORED_USER для этого пользователя на узле SQL, где привилегии известны как правильные; это приводит к созданию нового моментального снимка привилегий и его синхронизации с другими узлами SQL.

Примечание

NDB Cluster 9.2 не поддерживает распределение пользователей и привилегий MySQL между узлами SQL в NDB Cluster путем изменения таблиц привилегий MySQL таким образом, чтобы они использовали хранилище NDB, как это делалось в более ранних выпусках (NDB 7.6 и ранее — см.).

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-9.2-en/mysql-cluster-privilege-synchronization.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API