为了确保主机A可以连接到主机B的数据库,我尝试在远程主机上使用mysql_db
- name: Make sure A can connect to B database
mysql_db:
login_user=root
login_password=password
login_host=B_address
login_port=B_port
name=B_database
state=present
即使登录/传递正确,我也会收到该错误消息
msg: unable to connect, check login_user and login_password are correct,
or alternatively check ~/.my.cnf contains credentials
我错过了什么吗?我可以使用特定的ansible主机设置login_host吗?
解决方法:
Did you configure the mysql to accept the connection from Host A because
by default mysql only accept connection from localhost.
如果已配置mysql接受来自主机A的连接,则可以验证数据库是否存在
- name: check if DB exists
shell: mysql -e 'SHOW DATABASES;' | grep {{ B_database }}
register: dbstatus
failed_when: dbstatus.rc == 2
然后,如果B_database存在,则可以运行任务
- name: Make sure A can connect to B database
mysql_db:
login_user=root
login_password=password
login_host=B_address
login_port=B_port
name=B_database
state=present
when: dbstatus.rc == 0
如果您确定上述情况属实并且仍然出现错误,请执行以下操作:
在task / main.yml中添加此任务
- name: Copy the root credentials as .my.cnf file
template: src=root.cnf.j2 dest=~/.my.cnf mode=0600
这将是你的root.cnf.j2
[client]
user=root
password={{ password }}
它将做的是,从没有密码的root用户连接mysql并执行这些任务.您可以在运行所有任务后将其删除,或者将其保留,因为它位于root下且具有严格的权限.
原文地址:https://codeday.me/bug/20190528/1171908.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。