You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Airflow MySqlOperator连接MySQL时出现主机名不符的权限错误

解决Airflow MySqlOperator连接MySQL的1045权限错误及主机名不一致问题

先明确三个主机名的含义

  • hostname1:是Airflow调度器/工作节点所在机器的主机名(或IP),MySQL从这个地址收到连接请求,因此报错中显示该主机。
  • hostname2:你在Airflow Admin->Connection中配置的MySQL服务器地址,是Airflow尝试连接的目标主机。
  • USER()与CURRENT_USER()的差异:USER()返回的是你发起MySQL连接时的客户端主机,CURRENT_USER()是MySQL权限系统实际匹配到的账户主机(比如可能是通配符%、特定IP段等)。

调试修复步骤

  • 验证Airflow Connection的实际配置

    • 用Airflow CLI命令查看连接的真实配置:airflow connections get <你的连接ID>,确认返回的主机地址是否为hostname2,避免存在未保存的配置或同名连接冲突。
    • 若使用CeleryExecutor,检查Worker节点的配置是否同步,防止Worker使用旧的连接配置。
  • 排查MySQL权限规则

    • 查询当前用户的权限记录:执行SELECT user, host FROM mysql.user WHERE user = 'username';,查看该用户对应的允许访问主机列表。
    • 给Airflow所在的hostname1(或其IP)授权:如果权限列表中没有该主机,执行GRANT ALL PRIVILEGES ON <你的数据库名>.* TO 'username'@'hostname1' IDENTIFIED BY '你的密码';,再执行FLUSH PRIVILEGES;刷新权限。
    • 核对密码一致性:确保Airflow Connection中配置的密码,与MySQL中username@对应主机的密码完全一致。
  • 直接测试Airflow执行环境的连接

    • 在Airflow调度器/Worker所在机器上,用命令行测试连接:mysql -u username -p -h hostname2,如果同样报错1045,说明问题出在MySQL权限或密码,与Airflow本身无关;如果能成功连接,再检查MySqlOperator是否正确指定了Connection ID。
  • 排查DNS解析问题

    • 在Airflow机器上执行ping hostname2,查看解析出的IP地址,确认该IP对应的主机名是否为hostname1。若解析结果不符合预期,需要调整DNS配置,或直接在Airflow Connection中使用MySQL服务器的IP地址替代主机名。

内容的提问来源于stack exchange,提问作者Aragon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 19:15:35