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,您还必须授予 创建库存表的模式
CREATE
的INSERT
权限。清单表存储 MySQL 实例的唯一标识符,mysql
默认情况下在模式中创建。MySQL Server 5.6 或更高版本中不使用 inventory 表。
如果您打算自动创建权限较低的用户,General 和 Limited,您还必须授予 Admin 用户
CREATE USER
。您还必须全局授予SHOW VIEW
、PROCESS
、 和 权限REPLICATION CLIENT
, 并在 表 上授予所有权限。SELECT
SHOW DATABASES
UPDATE
performance_schema.threads
GRANT OPTION
如果您打算从 MySQL Enterprise Monitor 中安装 sys 模式, 除了上面列出的权限外,您还必须授予Admin
CREATE
用户 、、、、、 和 。INSERT
CREATE ROUTINE
CREATE TEMPORARY TABLES
CREATE VIEW
TRIGGER
General
:此可选用户处理不需要SUPER
级别权限的一般监控任务。在需要更高权限之前,将使用较低权限的用户。在这种情况下,MEM 会暂时以SUPER
特权用户身份登录,然后回退到普通用户。如果您手动管理此用户,请至少在 全局和表上 授予
EXECUTE
、PROCESS
、REPLICATION CLIENT
、SELECT
和 权限。如果您打算在视图上使用,您还必须授予.SHOW DATABASES
UPDATE
performance_schema.threads
EXPLAIN
SHOW VIEW
重要的如果您正在监控 MySQL 5.1.63 或更早版本,则必须将
SUPER
权限授予一般用户。代理需要此权限才能SHOW BINARY LOGS
在受监视实例上使用该语句。Limited
:此可选用户用于应限于单个连接的语句。这些类型的语句的示例包括从
INFORMATION_SCHEMA
表中获取数据库元数据,或用于监视应用程序特定统计信息的任何自定义 SQL。如果您手动管理此用户,它应该至少具有全局和表上 的
EXECUTE
,SELECT
和 权限。如果您打算在视图上使用,您还必须授予.SHOW DATABASES
UPDATE
performance_schema.threads
EXPLAIN
SHOW 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.inventory
该mysql.inventory
表不是在 MySQL 5.6 或更高版本上创建的。笔记SELECT
需要从 中读取所有对象的数据INFORMATION_SCHEMA
。如果不授予,则MySQL Enterprise Monitor 无法进行对象监控或统计。EXECUTE
: 需要执行辅助函数。PROCESS
: 监控运行MySQL 5.1.24及以上版本的MySQL服务器时InnoDB
,PROCESS
需要权限执行SHOW ENGINE INNODB STATUS
。INSERT
:如果您正在监控 MySQL 5.6 或更高版本,则不需要此权限。需要创建代理使用的 UUID。CREATE
:如果您正在监控 MySQL 5.6 或更高版本,则不需要此权限。MySQL Enterprise Monitor Agent 可以创建表。在发现过程中,代理会inventory
在mysql
数据库中创建用于存储服务器 UUID 的表。没有此表,代理无法确定服务器的 UUID,它会将此 UUID 与其他信息一起发送到 MySQL Enterprise Service Manager。UPDATE
在performance_schema.threads
桌子上。这样做是为了防止查询分析器运行的计划触发SQL 语句生成警告或错误事件 。EXPLAIN
生成这些警告是因为Performance_Schema
每个查询仅捕获 1024 个字符。授予此权限可以使连接在完成Performance_Schema
之前EXPLAIN
断开并在完成之后重新连接EXPLAIN
。笔记如果您手动管理普通用户和受限用户,则还必须将此权限授予这些用户。
例如,以下GRANT
语句为代理提供所需
SELECT
的
REPLICATION CLIENT
、
SHOW DATABASES
和
SUPER
权限:
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 上具有复制权限的用户授予对该表的权限SELECT
。mysql.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_uuid
used from slave 状态。因此,不需要启动和停止代理,也不需要设置SQL_LOG_BIN
为0。
如果 Admin 用户拥有创建其他用户所需的权限,您可以选中自动创建低权限用户复选框,输入这些用户的凭据,系统会为您创建这些用户。
如果未选中自动创建低权限用户 框并且普通用户和受限用户的凭据为空,则代理仅使用管理员用户进行监控。
如果未选中自动创建低权限用户 框,您可以输入普通用户和受限用户的凭据。如果您定义这些用户。您必须手动在受监控资产上创建它们。安装程序会尝试验证这些用户并在它们无效时显示一条警告消息。安装过程继续,代理程序正常工作,但您必须稍后创建这些用户。
在典型配置中,代理运行在与其监控的 MySQL 服务器相同的主机上,因此主机名通常是
localhost
. 如果代理在受监视的 MySQL 服务器以外的机器上运行,则更
localhost
改为适当的值。有关远程监控的更多信息,请参阅
第 5.7 节,“配置代理以监控远程 MySQL 服务器”。