Azure DevOps机器组MySQL部署任务触发ERROR 1045访问被拒问题
Azure DevOps 流水线MySQL部署任务报1045访问拒绝解决方案
问题复现
使用Machine Group环境下的MysqlDeploymentOnMachineGroup@1任务执行MySQL部署,已提前在代理节点安装mysql-client、mysql-server组件,任务配置如下:
steps: - task: MysqlDeploymentOnMachineGroup@1 displayName: 'Deploy Using : InlineSqlTask' inputs: TaskNameSelector: InlineSqlTask SqlInline: | CREATE DATABASE IF NOT EXISTS alm; use alm; ServerName: localhost SqlUsername: root SqlPassword: P2ssw0rd
任务执行抛出错误:
ERROR 1045 (28000) Access denied for user ‘root’@‘localhost’ (using password: YES)
排查步骤&修复方案
按优先级从高到低逐一验证:
- 先脱离流水线验证MySQL本地连通性
登录部署代理所在服务器,直接在终端执行连接命令:mysql -u root -pP2ssw0rd -h localhost,如果本地执行都报同样的1045错误,问题和流水线无关,是MySQL本身的账号配置问题:- 很多发行版源里的MySQL安装完默认给root配的是
auth_socket鉴权插件,只认Linux系统root用户的本地登录,根本不校验输入的密码,这时候直接用系统root身份登进MySQL,跑下面两句改鉴权方式、重设密码就行:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'P2ssw0rd'; FLUSH PRIVILEGES; - 确认输入的密码确实和MySQL内存储的root账号密码一致,注意全角/半角字符、大小写差异。
- 很多发行版源里的MySQL安装完默认给root配的是
- 修复流水线任务的默认配置坑
公开的默认示例配置存在几个容易触发鉴权失败的隐式问题,直接照抄很容易踩坑:- 将
ServerName的取值从localhost改为127.0.0.1:配置为localhost时MySQL默认走Unix Socket连接而非TCP连接,任务传入的密码参数在Socket鉴权场景下不会生效,改为127.0.0.1强制走TCP协议连接。 - 不要在YAML里明文写
SqlPassword,将密码存入Azure DevOps流水线的秘密变量(比如命名为MysqlRootPwd),任务中通过SqlPassword: $(MysqlRootPwd)引用:明文写密码时,部分代理版本会对特殊字符做意外转义,导致实际传给MySQL的密码和配置值不一致,用秘密变量传参可以避免这类转义问题。 - 如果使用MySQL 8.0及以上版本,在任务输入中新增
SqlAdditionalArguments: "--default-auth=mysql_native_password"参数:MySQL 8.0默认使用caching_sha2_password鉴权插件,任务内置的旧版mysql客户端可能不支持该插件,会直接抛出密码错误。
- 将
- 排查代理运行身份的权限问题
如果部署代理是以系统服务身份运行(比如Windows的Local System、Linux的非root系统账号),不建议直接使用root账号连接数据库,单独创建部署专用账号,给够必要权限即可:
流水线任务中替换为该专用账号的用户名、密码即可,能规避绝大多数跨身份鉴权的问题。CREATE USER 'devops_deploy'@'127.0.0.1' IDENTIFIED BY '自定义强密码'; GRANT ALL PRIVILEGES ON alm.* TO 'devops_deploy'@'127.0.0.1'; FLUSH PRIVILEGES; - 上下文连通性验证
如果本地连接验证正常、配置也改完还是报错,在MySQL部署任务前加一个命令行任务,直接在流水线执行上下文里跑连接测试:
如果这一步依然报错,重点检查秘密变量是否关联到了当前作业、变量作用域是否覆盖到了运行部署任务的阶段,避免变量没加载导致传空密码。mysql -u root -p$(MysqlRootPwd) -h 127.0.0.1 -e "SELECT 1;"
内容的提问来源于stack exchange,提问作者Nicolas
相关产品推荐
相关产品推荐

