首页 > 解决方案 > MySQL - 如何仅授予对 n 个从属设备之一的访问权限?

问题描述

我有一个主人和两个奴隶。

是否可以限制特定的只读用户仅查询第二个从属设备(禁止他在主设备和第一个从属设备上运行任何查询)?

我看到可以执行以下操作来对主服务器进行非复制更改,但我认为我需要的是对一个从服务器而不是另一个从服务器进行更改。

SET sql_log_bin = {OFF|ON}

并且 GRANT 语法允许限制主机用户的来源,但是 - 据我了解 - 不是该人可以使用的数据库服务器。

我在网络搜索中没有找到太多东西——也许这暗示了有更好的方法来解决这个问题。基本上我在问这是否可以由数据库强制执行,因为我想要的限制仅适用于这个用户。

标签: mysqlgrant

解决方案


对于上下文:从属服务器基本上只是一个复制主服务器上发生的每个操作的服务器。根据您的配置,从站将只运行已在主站上执行的相同查询,或者将更改列表应用于从站的各个行。

要仅为特定从站添加用户,您可以直接在从站上执行此操作。你在这里所做的任何事情都只会影响这个奴隶。如果您的用户当前存在于主服务器(和从服务器)上,您首先必须删除他/删除他的权限,等到此更改已复制到所有从服务器(这也可能取决于您的配置),然后添加/修改此用户直接在从站上。

您可能需要暂时禁用read_onlysuper_read_only设置(在从站上),该设置的存在是为了防止在从站上意外执行某些操作 - 但这就是您想要做的。

由于您的从站现在(略微)偏离了主站,如果您现在运行一个查询来更改您的主站上的该用户(例如再次删除它),它可能对主站和从站产生不同的影响。这将取决于您的配置,但请记住这一点。


推荐阅读