现象如下图:
exporter.go:149 level=error msg="Error pinging mysqld" err="Error 1045: Access denied for user 'exporter'@'172.17.0.3' (using password: YES)"
简单解释就是:mysqld_exporter无法连接到mysql,账号密码都正确。Navicat等数据库工具都可以正常登录。
先说结论:本地域用户赋权问题。mysqld_exporter是以本地域访问的MySQL,你指定的用户没有本地域权限。
GRANT ALL PRIVILEGES ON *.* TO 'exporter'@'localhost' IDENTIFIED BY '123456' WITH GRANT OPTION;
FLUSH PRIVILEGES;
注意:
1.如果root用户密码遗失,建议改配置文件加skip-table-privileges,跳过密码重启给root新密码,监控建议单独创建用户并赋权,例如:
CREATE USER 'exporter'@'localhost' IDENTIFIED BY '123456' WITH MAX_USER_CONNECTIONS 3;
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'localhost';
FLUSH PRIVILEGES
2. 查询用户权限: select * from mysql.user; 注意看host、user、Grant_pri等列
3. 更新密码,赋权的一些sql语句(删除了root权限也需要跳过密码重新给密码赋权)
参考资料: