sql >> Database >  >> RDS >> Mysql

Installeer MySQL met ansible op ubuntu

Wanneer mysql-server headless wordt geïnstalleerd, is er geen wachtwoord. Maak daarom .my.cnf werkt, zou het een lege wachtwoordregel moeten hebben. Dit is waarmee ik heb getest voor een .my.cnf :

[client]
user=root
password=

Het is ook een beetje vreemd om .my.cnf . te plaatsen in je vagrant gebruikersmap als eigendom van root en alleen leesbaar als root.

Nadat u zeker weet dat het wachtwoord leeg was in .my.cnf , kon ik het wachtwoord voor root correct instellen in die vier contexten. Merk op dat het daarna niet meer werkt, aangezien .my.cnf zou moeten worden bijgewerkt, dus het slaagt niet voor de idempotentie-test.

Er is een opmerking op de ansible mysql_user modulepagina die suggereert het wachtwoord te schrijven en vervolgens het schrijven van de .my.cnf het dossier. Als je dat doet, heb je een where . nodig clausule aan de mysql_user actie (waarschijnlijk met een bestandsstatistiek daarvoor).

Nog eleganter is het gebruik van check_implicit_admin samen met login_user en login_password . Dat is prachtig idempotent.

Als derde manier, misschien check_implicit_admin maakt het nog makkelijker.

Hier is mijn succesvolle playbook met het bovenstaande, getest met een paar nieuwe servers. Ben hier best wel trots op. Opmerking .my.cnf is voor dit alles niet nodig.

---
- hosts: mysql
  vars:
    mysql_root_password: fart
  tasks:
  - name: Install MySQL
    apt: name={{ item }} update_cache=yes cache_valid_time=3600 state=present
    sudo: yes
    with_items:
    - python-mysqldb
    - mysql-server
  #- name: copy cnf
  #  copy: src=.my.cnf dest=~/.my.cnf owner=ubuntu mode=0644
  #  sudo: yes
  - 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: "{{ mysql_root_password }}"
      login_user: root
      login_password: "{{ mysql_root_password }}"
      check_implicit_admin: yes
      priv: "*.*:ALL,GRANT"
    with_items:
      - "{{ ansible_hostname }}"
      - 127.0.0.1
      - ::1
      - localhost 

(edit- my.cnf verwijderd)



  1. Lijst met mooie permalinks en posttitel exporteren

  2. SQL:zoek naar een string in elke varchar-kolom in een database

  3. Ontvang de huidige lokale tijd van elk land in PL/SQL

  4. Hoe het aantal keren dat een teken voorkomt in een Oracle varchar-waarde te tellen?