【问题标题】:Why does Cloudbees Jenkins intermittently fail with Access denied error for MySQL?为什么 Cloudbees Jenkins 会因 MySQL 的 Access denied 错误而间歇性失败?
【发布时间】:2013-05-18 14:16:22
【问题描述】:

我们已设置 Cloudbees Jenkins 以在检测到 Github 中的提交时运行集成测试作业。但是由于一些奇怪的原因,一些间歇性构建失败并出现以下错误:

ERROR 1045 (28000): 拒绝用户 'root'@'localhost' 访问(使用密码:YES)

在我们的集成测试工作中,我们执行以下操作:

  1. 如果存在 MySQL 数据库,则删除它。
  2. 为集成测试创建一个新数据库。
  3. 运行集成测试(Junit)

我们曾经将 MySQL 管理员的密码设置为 root 用户的“mysql”——通过在作业中执行 shell 命令。后来我们删除了它,因为它下一次失败了,这表明密码不需要每次都由作业设置。

任何关于为什么会发生这种情况的意见都会有所帮助。

【问题讨论】:

  • 我可以通过在 cloudbees 上的 Jenkins 中添加以下内容来解决这个问题:mysqladmin -u root password 'mysql' --socket=/home/jenkins/mysql/mysql.sock >> temp. txt 重定向确保如果命令失败,构建不会停止。当密码为空时,它会设置密码。

标签: mysql cloudbees


【解决方案1】:

Cloudbees 平台使用从池,并且您的构建可能发生在它已经构建的节点上(分配算法试图为您提供这样一个,以便您获得所有已配置的依赖项)但您有时会构建到从一个新的节点开始。因此,您的构建需要在这两种情况下完全可重现。

可能的解决方法是使此密码初始化以某种方式为条件,以便您检测数据库是否已设置,或强制执行完全重置,以便您可以在每次构建时安全地运行 init 命令

【讨论】:

    猜你喜欢
    • 2012-08-09
    • 2016-06-25
    • 2022-07-14
    • 1970-01-01
    • 2017-07-05
    • 1970-01-01
    • 2015-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多