5.2 为 Monitor 代理创建 MySQL 用户帐户

MySQL Enterprise Monitor Agent 需要在每个被监视的 MySQL 实例中配置一个用户,该用户具有适当的权限来收集有关服务器的信息,包括变量名称、复制和存储引擎状态信息。

Agent 需要用户,并且可以根据系统的安全要求Admin选择使用General或 用户,或两者兼而有之。Limited在安装过程中,系统会提示您创建一般用户和受限用户。您可以允许代理使用 Admin 用户连接到数据库以执行所有任务,但建议为不需要 root 访问数据库的任务创建 General 或 Limited 用户。没有必要创建这两个用户。可以创建一个或另一个。代理使用查询所需的最低权限的用户,只有在查询需要时才更改为具有更高权限的用户。

  • Admin: 具有 SUPER权限的用户。SUPER运行某些语句(例如SHOW MASTER LOGS或 )需要特权,具体 SHOW ENGINE INNODB STATUS取决于正在监视的版本。

    笔记

    如果监控 MySQL Server 5.5,您还必须授予 创建库存表的模式CREATEINSERT权限。清单表存储 MySQL 实例的唯一标识符,mysql默认情况下在模式中创建。

    MySQL Server 5.6 或更高版本中不使用 inventory 表。

    如果您打算自动创建权限较低的用户,General 和 Limited,您还必须授予 Admin 用户 CREATE USER。您还必须全局授予SHOW VIEWPROCESS、 和 权限REPLICATION CLIENT, 并在 表 上授予所有权限。 SELECTSHOW DATABASESUPDATEperformance_schema.threadsGRANT OPTION

    如果您打算从 MySQL Enterprise Monitor 中安装 sys 模式, 除了上面列出的权限外,您还必须授予Admin CREATE用户 、、、、、 和 。 INSERTCREATE ROUTINECREATE TEMPORARY TABLESCREATE VIEWTRIGGER

  • General:此可选用户处理不需要 SUPER级别权限的一般监控任务。在需要更高权限之前,将使用较低权限的用户。在这种情况下,MEM 会暂时以 SUPER特权用户身份登录,然后回退到普通用户。

    如果您手动管理此用户,请至少在 全局和表上 授予EXECUTEPROCESSREPLICATION CLIENTSELECT和 权限。如果您打算在视图上使用,您还必须授予. SHOW DATABASESUPDATEperformance_schema.threadsEXPLAINSHOW VIEW

    重要的

    如果您正在监控 MySQL 5.1.63 或更早版本,则必须将SUPER权限授予一般用户。代理需要此权限才能SHOW BINARY LOGS在受监视实例上使用该语句。

  • Limited:此可选用户用于应限于单个连接的语句。

    这些类型的语句的示例包括从INFORMATION_SCHEMA表中获取数据库元数据,或用于监视应用程序特定统计信息的任何自定义 SQL。

    如果您手动管理此用户,它应该至少具有全局和表上 的EXECUTE, SELECT和 权限。如果您打算在视图上使用,您还必须授予. SHOW DATABASESUPDATEperformance_schema.threadsEXPLAINSHOW VIEW

创建管理员用户

如果您不想向安装程序提供根用户信息,请在您的 MySQL 服务器中手动创建一个用户,并在安装期间提供这些凭据作为代理用户/密码组合。此用户帐户所需的权限因您使用 MySQL Enterprise Monitor Agent 收集的信息而异。

  • SHOW DATABASES:MySQL Enterprise Monitor Agent 可以收集有关受监控的 MySQL 服务器的清单。

  • REPLICATION CLIENT:MySQL Enterprise Monitor Agent 可以收集复制主/从状态数据。仅当您使用 MySQL Replication Advisor 规则时才需要此权限。

  • SELECT:MySQL Enterprise Monitor Agent 可以收集表对象的统计信息。

  • SUPER:MySQL Enterprise Monitor Agent 可以执行SHOW ENGINE INNODB STATUS以收集有关 InnoDB 表的数据。使用此权限获取复制信息也需要此权限 ,如果监视 MySQL 5.5 或更早版本,则在填充用于标识 MySQL 实例SHOW MASTER STATUS的表时临时关闭复制。mysql.inventorymysql.inventory表不是在 MySQL 5.6 或更高版本上创建的。

    笔记

    SELECT需要从 中读取所有对象的数据 INFORMATION_SCHEMA。如果不授予,则MySQL Enterprise Monitor 无法进行对象监控或统计。

  • EXECUTE: 需要执行辅助函数。

  • PROCESS: 监控运行MySQL 5.1.24及以上版本的MySQL服务器时 InnoDBPROCESS需要权限执行SHOW ENGINE INNODB STATUS

  • INSERT:如果您正在监控 MySQL 5.6 或更高版本,则不需要此权限。需要创建代理使用的 UUID。

  • CREATE:如果您正在监控 MySQL 5.6 或更高版本,则不需要此权限。MySQL Enterprise Monitor Agent 可以创建表。在发现过程中,代理会inventorymysql数据库中创建用于存储服务器 UUID 的表。没有此表,代理无法确定服务器的 UUID,它会将此 UUID 与其他信息一起发送到 MySQL Enterprise Service Manager。

  • UPDATEperformance_schema.threads桌子上。这样做是为了防止查询分析器运行的计划触发SQL 语句生成警告或错误事件 。EXPLAIN生成这些警告是因为 Performance_Schema每个查询仅捕获 1024 个字符。授予此权限可以使连接在完成Performance_Schema之前EXPLAIN断开并在完成之后重新连接EXPLAIN

    笔记

    如果您手动管理普通用户和受限用户,则还必须将此权限授予这些用户。

例如,以下GRANT 语句为代理提供所需 SELECTREPLICATION CLIENTSHOW DATABASESSUPER权限:

GRANT SELECT, CREATE USER, REPLICATION CLIENT, SHOW DATABASES, SUPER, PROCESS
  ON *.*
  TO  'agent_user'@'localhost';
笔记

使用Auto-Create Less Privileged Users时,还要添加WITH GRANT OPTION到上述语句中。

出于安全原因,您可以限制代理的 CREATE权限 INSERT,使其只能在 mysql数据库中创建表:

GRANT CREATE, INSERT
  ON mysql.*
  TO  'agent_user'@'localhost';

如果 master 或 slave 运行的 MySQL 版本早于 5.6,则必须为每个在相应的复制 master 上具有复制权限的用户授予对该表的权限SELECTmysql.inventory这使 MySQL Enterprise Monitor Agent 能够读取复制主 UUID。例如:

GRANT SELECT
  ON mysql.inventory
  TO  'replicationuser'@'%';
笔记

在对应的MySQL服务器上运行agent后 执行此步骤,确保 mysql.inventory表创建正确。启动代理,关闭代理,运行上面的 GRANT语句,然后启动代理。

如果代理无法访问表中的信息,则会将包含此信息的警告写入代理日志。

笔记

您可以禁用授权语句的日志记录,以防止授权信息被复制到从站。在这种情况下,请SET SQL_LOG_BIN=0在执行上述语句之前执行该 GRANT语句。

重要的

如果运行 MySQL 5.6 或更高版本,则无需授予 select on,mysql.inventory因为 master_uuidused from slave 状态。因此,不需要启动和停止代理,也不需要设置SQL_LOG_BIN为0。

创建有限用户和普通用户

如果 Admin 用户拥有创建其他用户所需的权限,您可以选中自动创建低权限用户复选框,输入这些用户的凭据,系统会为您创建这些用户。

如果未选中自动创建低权限用户 框并且普通用户和受限用户的凭据为空,则代理仅使用管理员用户进行监控。

如果未选中自动创建低权限用户 框,您可以输入普通用户和受限用户的凭据。如果您定义这些用户。您必须手动在受监控资产上创建它们。安装程序会尝试验证这些用户并在它们无效时显示一条警告消息。安装过程继续,代理程序正常工作,但您必须稍后创建这些用户。

在典型配置中,代理运行在与其监控的 MySQL 服务器相同的主机上,因此主机名通常是 localhost. 如果代理在受监视的 MySQL 服务器以外的机器上运行,则更 localhost改为适当的值。有关远程监控的更多信息,请参阅 第 5.7 节,“配置代理以监控远程 MySQL 服务器”