张 Linux 2025-08-13 14:46 采纳率: 21.4%
浏览 6

docker启动prom/mysqld-exporter报错

prom/mysqld-exporter 日志如下

img

img

启动代码如下

docker run -d -p 9104:9104 \
  -e DATA_SOURCE_NAME="ROOT:123456@tcp(192.168.223.128:3306)/" \
  --name mysqld-exporter \
  prom/mysqld-exporter

启动后

img

docker ps 查看 没有启动成功

img

  • 写回答

4条回答 默认 最新

  • 檀越@新空间 2025-08-13 15:21
    关注

    下午好🌅🌅🌅
    本答案参考通义千问

    根据你提供的信息,prom/mysqld-exporter 启动失败,可能的原因包括:

    • MySQL 服务不可达:Docker 容器无法连接到 MySQL 服务器(192.168.223.128:3306)。
    • 权限问题:用户 ROOT 没有权限访问 MySQL 数据库。
    • 网络配置问题:Docker 网络与 MySQL 服务器不在同一网络中。
    • 数据源名称格式错误DATA_SOURCE_NAME 的格式不正确。

    重点问题分析

    1. 检查 MySQL 是否可达

      • 确保从 Docker 容器内部可以访问 MySQL 服务器(192.168.223.128:3306)。
      • 可以通过运行一个临时的 alpine 容器测试连通性:
        docker run --rm -it alpine sh
        ping 192.168.223.128
        telnet 192.168.223.128 3306
        
    2. 确认 DATA_SOURCE_NAME 格式是否正确

      • 正确格式应为:<user>:<password>@tcp(<host>:<port>)/<database>
      • 当前设置为 "ROOT:123456@tcp(192.168.223.128:3306)/",表示没有指定数据库名,这是可以接受的,但需要确保用户权限足够。
    3. 检查 MySQL 用户权限

      • 登录 MySQL 并执行以下命令查看用户权限:
        GRANT REPLICATION CLIENT, PROCESS ON *.* TO 'ROOT'@'%';
        FLUSH PRIVILEGES;
        
      • 如果用户只能从特定 IP 访问,需要修改为 % 或添加允许的 IP。
    4. 使用 --network host 或自定义网络

      • 如果容器和 MySQL 不在同一网络中,可以尝试使用 --network host(Linux 下有效):
        docker run -d -p 9104:9104 \
          --network host \
          -e DATA_SOURCE_NAME="ROOT:123456@tcp(192.168.223.128:3306)/" \
          --name mysqld-exporter \
          prom/mysqld-exporter
        

    解决方案步骤

    1. 检查 MySQL 服务是否正常运行

      • 登录 MySQL 服务器,确保 mysqld 服务正在运行:
        systemctl status mysql
        
    2. 确认 MySQL 允许远程访问

      • 编辑 MySQL 配置文件(如 /etc/mysql/mysql.conf.d/mysqld.cnf),确保 bind-address 设置为 0.0.0.0 或注释掉该行:
        bind-address = 0.0.0.0
        
      • 重启 MySQL 服务:
        systemctl restart mysql
        
    3. 验证 MySQL 用户权限

      • 登录 MySQL,执行:
        CREATE USER 'ROOT'@'%' IDENTIFIED BY '123456';
        GRANT REPLICATION CLIENT, PROCESS ON *.* TO 'ROOT'@'%';
        FLUSH PRIVILEGES;
        
    4. 重新启动 mysqld-exporter

      • 使用修正后的命令:
        docker run -d -p 9104:9104 \
          -e DATA_SOURCE_NAME="ROOT:123456@tcp(192.168.223.128:3306)/" \
          --name mysqld-exporter \
          prom/mysqld-exporter
        
    5. 检查日志获取更多信息

      • 查看 mysqld-exporter 容器日志:
        docker logs mysqld-exporter
        

    修改后的完整启动命令

    docker run -d -p 9104:9104 \
      -e DATA_SOURCE_NAME="ROOT:123456@tcp(192.168.223.128:3306)/" \
      --name mysqld-exporter \
      prom/mysqld-exporter
    

    常见错误及解决方法总结

    | 错误提示 | 解决方案 | |----------|----------| | could not connect to MySQL | 检查 MySQL 是否可访问、用户权限、防火墙设置 | | invalid data source name | 确认 DATA_SOURCE_NAME 格式正确 | | connection refused | 检查 MySQL 端口是否开放、网络是否连通 | | access denied for user | 检查 MySQL 用户密码和权限 |


    如果你仍然遇到问题,请提供 docker logs mysqld-exporter 的具体输出内容,我可以进一步帮你定位问题。

    评论

报告相同问题?

问题事件

  • 创建了问题 8月13日