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无需密码或任何密码都可登录原因及解决