在Ansible中创建MySQL数据库

时间:2015-02-17 18:50:45

标签: mysql ansible

我正在接触Ansible,但我正在努力在MySQL上创建一个新的数据库,我已经安装并启动了它的服务。

我一直得到的错误是;

  

失败:[prod-wp] => {“failed”:true} msg:无法连接   数据库,检查login_user和login_password是否正确或〜/ .my.cnf   有证书

下面是YML,你能帮忙吗?

#GET MySQL RUNNING
- name: Start the MySQL service
  sudo: yes
  service: 
    name: mysql 
    state: started
    enabled: true
- name: update mysql root password for all root accounts
  sudo: yes
  mysql_user: 
    name: root 
    host: "{{ item }}" 
    password: "pws"
    login_user: root
    login_password: "pws"
    check_implicit_admin: yes
    priv: "*.*:ALL,GRANT"
  with_items:
  - "{{ ansible_hostname }}"
  - 127.0.0.1
  - 1
  - localhost
#命令设置WordPress
- name: Create a new database
  mysql_db: name=demo state=present collation=utf8_general_ci
- name: Create a database user
  mysql_user: name=root password=pws priv=*.*:ALL host=localhost 

2 个答案:

答案 0 :(得分:2)

现在这是一个猜测,因为您的passwordlogin_password是相同的。默认情况下,MySQL为用户root设置一个空密码,我想这就是你想要首先改变它的原因。但是您无法使用pws密码登录,因为您首先必须设置它...这有意义吗?

因此,请尝试将login_password留空:

login_password: ""

或完全删除该行。

答案 1 :(得分:1)

设置root密码后,我们会使用/root/.my.cnf配置文件,以便将来各种Ansible任务都可以访问它:

- name: create mysql database
  mysql_db: name=local state=present
- name: set mysql root password
  mysql_user: name=root host=localhost password=xxxxxx
- name: store mysql root password
  copy: src=files/mysql-user.cnf dest=/root/.my.cnf

files/mysql-user.cnf包含:

[client]
user=root
password=xxxxxx

[mysql]
user=root
password=xxxxxx

[mysqldump]
user=root
password=xxxxxx

[mysqldiff]
user=root
password=xxxxxx