【问题标题】:Ansible mysql8 root passwords and native usersAnsible mysql8 root 密码和本机用户
【发布时间】:2023-03-12 18:48:01
【问题描述】:

我是 ansible 的新手,花了很长时间搜索我觉得好像我错过了一些应该很明显的东西。

问题

在 Ubuntu 20.04 服务器上使用 ansible 安装 MySql8 后,我无法执行与 MySql 相关的任何其他操作,因为 MySql“root”用户的密码设置为随机值并保存到错误日志中。我找到的唯一解决方案是检索密码并更改它。但是,这只会工作一次。稍后再次运行相同的 playbook 将导致错误,因为密码已经更改。

在创建由 MySQL 本机密码标识的用户时,我遇到了类似的问题。我找到了解决方案,首先创建一个用户,然后使用 shell 命令将用户转换为由本机密码识别。但我真的不希望每次运行剧本时都会发生这种情况。我想要的是仅在用户不存在时才创建用户。

如果我手动执行此操作,我会使用以下方式登录 MySql sudo mysql 或者使用 mysql_secure_installation 脚本设置 root 密码。

问题

  1. 有没有办法从 ansible 设置 root MySQL 帐户密码 在不知道当前密码的情况下使用 sudo 密码,例如 上面?

  2. 是否可以创建由本机密码标识的用户 不使用 shell 命令,以便仅在以下情况下创建用户 还不存在?

【问题讨论】:

    标签: ansible mysql-8.0


    【解决方案1】:

    这似乎是mysql8.0的问题
    我当时的解决方案是以下步骤


    1. sudo grep "temporary password" /var/log/mysqld.log|cut -d ' ' -f 11 获取 root 的临时密码
    2. 更新root密码(可能使用mysql_user模块)
      "sudo mysqladmin -u root password '{{ new_mysql_root_password }}' -p'{{ password_from_1 }}'"

    我使用 shell 模块使用 2 个 sudo 命令执行此操作,但我认为理想的方法是 \ 使用 shell 模块做 1 使用 1 对 mysql 进行连接检查并将其注册到变量 root_check do 2 only when root_check 不会抛出错误。

    在我的情况下,如果第一次更改密码时发生在 2 时,我忽略了该错误。

    我相信有更好的解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-05
      • 2016-11-20
      • 1970-01-01
      • 2019-04-22
      • 2013-10-18
      • 2022-06-10
      • 1970-01-01
      • 2017-07-02
      相关资源
      最近更新 更多