首页 > 解决方案 > mysql的Ansible设置

问题描述

我正在学习 ansible,我基本上是在使用 ansible 设置我的 ec2 服务器,并在另一台 ec2 服务器上安装 mysql。目标是创建一个密码为 12345 的用户 Bob。

  - hosts: database
  sudo: yes

  tasks:
    - name: Install mySQL repo
      yum: name=http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm state=present

    - name: Install mySQL
      yum: pkg={{ item }}
      with_items:
        - mysql-community-server
        - mysql-community-client
        - MySQL-python

    - name: start mySQL service
      action: service name=mysqld state=started

    - name: copy my.cnf
      template: src=.my.cnf dest=/root/.my.cnf owner=root mode=0600

    - name: Create database user
      mysql_user: name=bob password=12345 priv=*.*:ALL state=present login_user=root login_password=Password123_#

这是 my.cnf 文件:

[client]
user=root
password=Password123_#

目前,这是我已经完成的 ansible 剧本,但我不断得到一个

fatal: [FAILED! => {"changed": false, "msg": "unable to connect to database, check login_user and login_password are correct or /root/.my.cnf has the credentials. Exception message: (1045, \"Access denied for user 'root'@'localhost' (using password: NO)\")"}
        to retry, use: --limit @/etc/an

我可以对我做错了什么提出一些建议吗?

PS:我不是 mySQL 专家,但正在学习。

标签: ansible

解决方案


您尝试做的是为没有 mysql 连接凭据的新用户定义凭据。

如此处所述,添加或删除带有模块的用户需要文件中login_user&login_password或凭据。~/.my.cnfmysql_user

传递凭据时,login_password 和 login_user 都是必需的。如果不存在,该模块将尝试从 ~/.my.cnf 读取凭据,最后回退到使用 MySQL 默认登录名“root”,没有密码。


推荐阅读