NDB 8.0.18引入了一种新的机制,用于在连接到NDB集群的SQL节点之间共享和同步用户、角色和特权。可以通过授予NDB_STORED_USER
特权。有关使用信息,请参阅特权的说明。
NDB_STORED_USER
在输出中打印秀奖助金
和其他特权一样。要验证特权是否共享,请使用ndb_select_allNDB Cluster分发版提供的实用程序,如下所示(一些输出封装以保持格式):
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'要求无密码过期默认帐户解锁密码历史默认密码重用间隔默认密码要求当前默认“12”'乔恩'@'localhost'" 0 [NULL] "授予使用*。* TO 'jon'@'localhost'" 12 "'jon'@'localhost'" 3 [NULL] "授予test的所有权限。* TO 'jon'@'localhost'" 12 "'jon'@'localhost'" 2 [NULL] "授予mydb的所有权限。* TO 'jon'@'localhost'" 12 "'jon'@'localhost'" 1 [NULL] "GRANT NDB_STORED_USER ON *。* TO ' jon ' @ ' localhost ' "返回5行
ndb_sql_metadata
是一种特殊的NDB
控件中不可见的mysql或其他MySQL客户端。
一种授予NDB_STORED_USER
特权,如在*上授予ndb_stored_user权限。*“cluster_app_user”@“localhost”
,通过导演工作NDB
使用查询创建快照显示创建用户cluster_app_user@localhost
而且SHOW GRANTS FOR cluster_app_user@localhost
,然后将结果存储在ndb_sql_metadata
.然后请求任何其他SQL节点读取和应用快照。当MySQL服务器启动并作为SQL节点加入集群时,它就会执行这些存储创建用户
而且格兰特
语句作为集群模式同步过程的一部分。
的实用程序线程中运行SQL语句NDBCLUSTER
存储引擎;这是在一个与MySQL复制副本应用程序线程等效的安全环境中完成的。
您应该意识到对用户的更改NDB_STORED_USER
异步分布。因为分布式模式更改操作是同步执行的,所以在对任何分布式用户或用户进行更改之后的下一个分布式模式更改将充当同步点。在模式更改分发开始之前,任何挂起的用户更改都会运行到完成;在此之后,模式更改本身同步运行。例如,如果删除数据库
声明之前减少用户
对于分布式用户,只有在所有SQL节点上完成用户删除操作后,才能删除数据库。
在这种情况下格兰特
,撤销
,或者来自多个SQL节点的其他用户管理语句导致给定用户的权限在不同的SQL节点上产生分歧,您可以通过发出以下命令来解决这个问题格兰特NDB_STORED_USER
在SQL节点上,该用户的权限是正确的;这将导致获得一个新的权限快照,并将其同步到其他SQL节点。
NDB Cluster 8.0不支持通过转换MySQL权限表来在NDB Cluster中的SQL节点上分布MySQL用户和权限NDB
存储引擎,在NDB 7.6和更早的版本中实现(参见使用共享授权表的分布式权限).有关此更改对从上一个版本升级到NDB 8.0的影响的信息,请参见第23.2.7节,“升级和降级NDB集群”.