Ansible mysql8 root 密码和本机用户

Posted

技术标签:

【中文标题】Ansible mysql8 root 密码和本机用户【英文标题】:Ansible mysql8 root passwords and native users 【发布时间】:2020-07-30 01:04:14 【问题描述】:

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

问题

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

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

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

问题

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

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

【问题讨论】:

【参考方案1】:

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

    sudo grep "temporary password" /var/log/mysqld.log|cut -d ' ' -f 11 获取 root 的临时密码 更新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 时,我忽略了该错误。

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

【讨论】:

以上是关于Ansible mysql8 root 密码和本机用户的主要内容,如果未能解决你的问题,请参考以下文章

Mysql 8 root修改密码,root无需密码或任何密码都可登录原因及解决

MySQL8.0修改root账号的密码

mysql8 修改root密码

Mysql 8.0 密码管理问题,root登录修改默认密码,root无需密码或任何密码都可以登录原因及解决方法

ubuntu mysql8.0.19忘记root密码

Debian Mysql8.0 重设Root密码