码迷,mamicode.com
首页 > 数据库 > 详细

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

时间:2017-08-15 18:51:35      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:str   部署   rest   ges   false   call   数据   roo   节点   

在使用了多个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集群的分布式权限

标签:str   部署   rest   ges   false   call   数据   roo   节点   

原文地址:http://www.cnblogs.com/coe2coe/p/7366548.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!