我是不熟悉ansible的新手,并且花了很长时间进行搜索,感觉好像我错过了一些显而易见的事情。
问题
在Ubuntu 20.04服务器上使用ansible安装MySql8之后,我无法执行与MySql相关的任何其他操作,因为MySql“ root”用户的密码设置为随机密码并保存到错误日志中。我发现的唯一解决方案是检索密码并更改它。但是,这只会工作一次。稍后再次运行同一本剧本会导致错误,因为密码已经更改。
在创建由MySQL本机密码标识的用户时,我遇到类似的问题。我已经找到了解决方案,可以先创建一个用户,然后使用shell命令将用户转换为由本机密码标识的解决方案。但是我真的不希望每次运行剧本时都会发生这种情况。我想要的是仅在尚不存在的情况下才创建用户。
如果我手动执行此操作,则可以使用以下命令登录MySql
sudo mysql
否则,请使用mysql_secure_installation脚本设置root密码。
问题
是否可以通过ansible设置MySQL根帐户密码 不知道使用sudo密码的当前密码 以上?
是否可以创建由本机密码标识的用户 不使用shell命令,以便仅在以下情况下创建用户 它不存在吗?
答案 0 :(得分:0)
这似乎是mysql8.0的问题
当时我的解决方案低于步骤
sudo grep "temporary password" /var/log/mysqld.log|cut -d ' ' -f 11
"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点,我将忽略该错误。
我相信有更好的解决方案。