sql >> Databasteknik >  >> RDS >> Mysql

Installera MySQL med ansible på ubuntu

När mysql-server installeras huvudlöst, det finns inget lösenord. Gör därför .my.cnf fungerar, bör den ha en tom lösenordsrad. Här är vad jag testade med för en .my.cnf :

[client]
user=root
password=

Det är också lite konstigt att sätta .my.cnf i din vagrant användarkatalog som ägs av root och endast läsbar som root.

Efter att ha säkerställt att lösenordet var tomt i .my.cnf , kunde jag ställa in lösenordet för root korrekt i dessa fyra sammanhang. Observera att den inte kan köras efter det, eftersom .my.cnf skulle behöva uppdateras, så den klarar inte idempotenstestet.

Det finns en anteckning på den ansible mysql_user-modulsidan som föreslår att du skriver lösenordet och sedan skriva .my.cnf fil. Om du gör det behöver du en where sats till mysql_user åtgärd (troligen med en filstat före det).

Ännu mer elegant är att använda check_implicit_admin tillsammans med login_user och login_password . Det är vackert idempotent.

Som ett tredje sätt, kanske check_implicit_admin gör det ännu enklare.

Här är min framgångsrika spelbok som visar ovanstående, testad med några nya servrar. Lite stolt över detta. Notera .my.cnf är onödigt för allt detta.

---
- 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 

(redigera- tog bort my.cnf)



  1. Hur man listar tabell främmande nycklar

  2. Hur man INNER JOIN 3 tabeller med CodeIgniter

  3. Använder Jquery Ajax för att hämta data från Mysql

  4. Hur undertrycker man utdata och kontrollerar om ett kommando är framgångsrikt eller inte?