MySQL学习笔记05MySQL集群的分布式权限

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL学习笔记05MySQL集群的分布式权限相关的知识,希望对你有一定的参考价值。

在使用了多个SQL节点之后,默认情况下,在一个节点中增加的用户,在其它节点上并不是可见的。mysql 集群提供了让用户和权限在整个集群中有效的途径。

 

(1)执行MySQL集群提供的SQL脚本。

MySQL集群在安装目录提供了ndb_dist_priv.sql这个脚本,用于为集群提供分布式权限。

在某一个SQL节点61MySQL服务中执行这个脚本,这个脚本将用户与权限相关的数据表比如user表等的存储引擎从MyISAM修改为NDBCluster

mysql -uroot -p < /usr/share/mysql/ndb_dist_priv.sql

 

执行完毕后,可以看到以下跟分布式权限有关的存储过程和函数:

mysql> select routine_name,routine_schema,routine_type from information_schema.routines where routine_name like ‘mysql_cluster%‘ order by routine_type asc;

+---------------------------------------------+----------------+--------------+

| routine_name                                | routine_schema | routine_type |

+---------------------------------------------+----------------+--------------+

| mysql_cluster_privileges_are_distributed    | mysql          | FUNCTION     |

| mysql_cluster_backup_privileges             | mysql          | PROCEDURE    |

| mysql_cluster_move_grant_tables             | mysql          | PROCEDURE    |

| mysql_cluster_move_privileges               | mysql          | PROCEDURE    |

| mysql_cluster_restore_local_privileges      | mysql          | PROCEDURE    |

| mysql_cluster_restore_privileges            | mysql          | PROCEDURE    |

| mysql_cluster_restore_privileges_from_local | mysql          | PROCEDURE    |

+---------------------------------------------+----------------+--------------+

7 rows in set (0.08 sec)

 

执行以下函数查询是否已经部署了分布式权限。在刚刚执行上述脚本后,结果是FALSE

mysql> select mysql_cluster_privileges_are_distributed();

+--------------------------------------------+

| mysql_cluster_privileges_are_distributed() |

+--------------------------------------------+

|                                          0 |

+--------------------------------------------+

1 row in set (0.00 sec)

 

 

(2)执行有关存储过程。

 

需要执行MySQL Cluster提供的以下存储过程,才能实现分布式权限。

mysql> call mysql_cluster_move_privileges();

Query OK, 0 rows affected (4.23 sec)

 

再次查询是否部署了分布式权限,结果为TRUE

mysql> select mysql_cluster_privileges_are_distributed();

+--------------------------------------------+

| mysql_cluster_privileges_are_distributed() |

+--------------------------------------------+

|                                          1 |

+--------------------------------------------+

1 row in set (0.00 sec)

 

 

(3)重新启动其它SQL节点的MySQL服务。

在重新启动之后,就可以看到在节点61上的MySQL服务中的user表的存储引擎已经修改为NDBCluster了。同时可以看到user表中已经有了节点61中的test用户了,而且可以使用该用户进行登录。由于用户与权限相关的数据表的存储引擎为NDBCluster,在之后对用户与权限进行的修改,将在整个集群中有效。

 

至此,MySQL的分布式权限已经部署完毕了。

 

以上是关于MySQL学习笔记05MySQL集群的分布式权限的主要内容,如果未能解决你的问题,请参考以下文章

MySQL学习笔记02MySQL集群相关概念

MySQL学习笔记03MySQL集群的安装部署

分布式服务框架学习笔记1 应用架构演进

mysql学习笔记(7-用户账号及权限管理)

工作经验分享你值得阅读的Mysql事物学习笔记

Linux学习笔记:MySQL读写分离实验从库回收权限