2016-07-22 6 views
2

Ich benutze Vagrant und Ansble auf CentOS 7. Ich versuche, MySQL 5.7 zu installieren, aber ich habe das Problem, wenn MySQL-Passwort zu aktualisieren.Vagrant Ansible CentOS 7 Wie installiere ich MySQL 5.7 und ändere das Standardpasswort

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

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

- name: Start the MySQL service 
    service: name=mysqld state=started enabled=true 

- name: update mysql root passwd 
    mysql_user: name=root 
      host={{ item }} 
      password='PassW0rd' 
      check_implicit_admin=yes 
      login_user=root 
      login_password='' 
      state=present 
    with_items: 
    - 127.0.0.1 
    - ::1 
    - localhost 

Ich habe recherchiert und festgestellt, dass MySQL 5.7 automatischen ein Standard-Passwort generieren, so mein Skript ist fehlgeschlagen. Würde mir jemand helfen, dieses Problem zu lösen?

+0

Es gibt gut getestete mysql Rollen wie 'geerlingguy.mysql', um dieses Problem zu beheben. Vielleicht sehen Sie sich die Quelle dort an: https://github.com/geerlingguy/ansible-role-mysql – mblaettermann

Antwort

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

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

    - name: Start the MySQL service 
    service: name=mysqld state=started enabled=true 

    - name: Change mysql root password and keep track in 
    shell: | 
     password_match=`awk '/A temporary password is generated for/ {a=$0} END{ print a }' /var/log/mysqld.log | awk '{print $(NF)}'` 
     echo $password_match 
     mysql -uroot -p$password_match --connect-expired-password -e "ALTER USER 'root'@'localhost' IDENTIFIED BY 'PassW0rd'; flush privileges; " 
     echo "[client] 
     user=root 
     password=PassW0rd > /root/.my.cnf 
    args: 
     creates: /root/.my.cnf 
    register: change_temp_pass 
    notify: restart mysqld 

    - meta: flush_handlers  
    - debug: 
      var: change_temp_pass 
handlers: 
    - name: restart mysqld 
     service: 
     name: mysqld 
     state: restarted