Ansible MySQL8 root密码和本地用户

时间:2020-07-30 01:04:14

标签: ansible mysql-8.0

我是不熟悉ansible的新手,并且花了很长时间进行搜索,感觉好像我错过了一些显而易见的事情。

问题

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

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

如果我手动执行此操作,则可以使用以下命令登录MySql sudo mysql 否则,请使用mysql_secure_installation脚本设置root密码。

问题

  1. 是否可以通过ansible设置MySQL根帐户密码 不知道使用sudo密码的当前密码 以上?

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

1 个答案:

答案 0 :(得分:0)

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


  1. 获取root的临时密码 sudo grep "temporary password" /var/log/mysqld.log|cut -d ' ' -f 11
  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中 仅执行2 when root_check不会引发错误。

就我而言,如果第一次更改密码,如果错误发生在2点,我将忽略该错误。

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

相关问题