无法连接到通过正确启动的MySQL Docker容器

我得到一个“访问被拒绝”的错误,试图连接到MySQL Docker容器,我通过我的脚本开始。 如果我使用Docker CLI工具创build容器,则一切正常。 我想知道这是否与环境variables有关。

这工作

$ docker run --name database -e MYSQL_ROOT_PASSWORD=hunter2 -d mysql:5.7 $ mysql -h $CONTAINER_IP_ADDRESS -u root -phunter2 $ mysql> 

这已破了

playbook.yml

 - name: Start new MySQL container docker: name: database image: mysql:5.7 state: running env: MYSQL_ROOT_PASSWORD=hunter2 

然后连接失败:

 $ mysql -h $CONTAINER_IP_ADDRESS -u root -phunter2 ERROR 1045 (28000): Access denied for user 'root'@'$CONTAINER_IP_ADDRESS' (using password: YES) 

任何想法,我在这里失踪?

docker模块的env定义应该是一个dict对象,而不是一个string

 env: MYSQL_ROOT_PASSWORD: hunter2 

过了一段时间,我发现这个可靠性不能很好地与Docker搭配。 我一直在将一些基础架构从aker转移到Docker,并且保留一些遗留代码,比如将用户添加到mysql或倾销dbs,这些都不是Ansible的工作。

解决scheme是使用shell来代替:

 - name: Drop/delete mysql table {{ mysql_table }} shell: mysqladmin -h 127.0.0.1 -p{{ mysql_password }} -u{{ mysql_user }} drop {{ mysql_table }} -f # If it fails it means db was already deleted, so continue. ignore_errors: True tags: - mysql - mysql_rebuild_db - mysql_rebuild_db_quick - name: Add mysql table {{ mysql_table }} shell: mysqladmin -h 127.0.0.1 -p{{ mysql_password }} -u{{ mysql_user }} create {{ mysql_table }} -f tags: - mysql - mysql_rebuild_db - mysql_rebuild_db_quick - name: Create mysql user {{ mysql_user }} in {{ mysql_table }} shell: echo "CREATE USER {{ mysql_user }}@'localhost' IDENTIFIED BY '{{ mysql_password }}';" | mysql -h 127.0.0.1 -proot -uroot # The user may already exists in a previous run ignore_errors: True tags: - mysql - mysql_rebuild_db - mysql_rebuild_db_quick